comparison dmd/root/port.c @ 1393:04177061f98d

Patch to allow compiling LDC with MinGW, by `mp4 / [1]jaffa` (slightly edited). Closes #300.
author Frits van Bommel <fvbommel wxs.nl>
date Mon, 18 May 2009 14:02:50 +0200
parents 8026319762be
children
comparison
equal deleted inserted replaced
1392:336faed34424 1393:04177061f98d
313 return ::strupr(s); 313 return ::strupr(s);
314 } 314 }
315 315
316 #endif 316 #endif
317 317
318 #if linux || __APPLE__ || __FreeBSD__ 318 #if linux || __APPLE__ || __FreeBSD__ || __MINGW32__
319 319
320 #include <math.h> 320 #include <math.h>
321 #if linux 321 #if linux
322 #include <bits/nan.h> 322 #include <bits/nan.h>
323 #include <bits/mathdef.h> 323 #include <bits/mathdef.h>
361 { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F }; 361 { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F };
362 Port::ldbl_max = *(long double *)&x[0]; 362 Port::ldbl_max = *(long double *)&x[0];
363 #endif 363 #endif
364 } 364 }
365 365
366 #ifndef __MINGW32__
366 #undef isnan 367 #undef isnan
368 #endif
367 int Port::isNan(double r) 369 int Port::isNan(double r)
368 { 370 {
369 #if __APPLE__ 371 #if __APPLE__
370 return __inline_isnan(r); 372 return __inline_isnan(r);
373 #elif defined __MINGW32__
374 return isnan(r);
371 #else 375 #else
372 return ::isnan(r); 376 return ::isnan(r);
373 #endif 377 #endif
374 } 378 }
375 379
376 int Port::isNan(long double r) 380 int Port::isNan(long double r)
377 { 381 {
378 #if __APPLE__ 382 #if __APPLE__
379 return __inline_isnan(r); 383 return __inline_isnan(r);
384 #elif defined __MINGW32__
385 return isnan(r);
380 #else 386 #else
381 return ::isnan(r); 387 return ::isnan(r);
382 #endif 388 #endif
383 } 389 }
384 390
402 int Port::isFinite(double r) 408 int Port::isFinite(double r)
403 { 409 {
404 return ::finite(r); 410 return ::finite(r);
405 } 411 }
406 412
413 #ifndef __MINGW32__
407 #undef isinf 414 #undef isinf
415 #endif
408 int Port::isInfinity(double r) 416 int Port::isInfinity(double r)
409 { 417 {
410 #if __APPLE__ 418 #if __APPLE__
411 return fpclassify(r) == FP_INFINITE; 419 return fpclassify(r) == FP_INFINITE;
420 #elif defined __MINGW32__
421 return isinf(r);
412 #else 422 #else
413 return ::isinf(r); 423 return ::isinf(r);
414 #endif 424 #endif
415 } 425 }
416 426
441 return buffer; 451 return buffer;
442 } 452 }
443 453
444 wchar_t *Port::ull_to_string(wchar_t *buffer, ulonglong ull) 454 wchar_t *Port::ull_to_string(wchar_t *buffer, ulonglong ull)
445 { 455 {
456 #ifndef __MINGW32__
446 swprintf(buffer, sizeof(ulonglong) * 3 + 1, L"%llu", ull); 457 swprintf(buffer, sizeof(ulonglong) * 3 + 1, L"%llu", ull);
458 #else
459 _snwprintf(buffer, sizeof(ulonglong) * 3 + 1, L"%llu", ull);
460 #endif
447 return buffer; 461 return buffer;
448 } 462 }
449 463
450 double Port::ull_to_double(ulonglong ull) 464 double Port::ull_to_double(ulonglong ull)
451 { 465 {