Mercurial > projects > ldc
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 { |