1 2 /* Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved 3 * http://www.digitalmars.com 4 * Distributed under the Boost Software License, Version 1.0. 5 * http://www.boost.org/LICENSE_1_0.txt 6 * https://github.com/dlang/dmd/blob/master/src/dmd/root/port.h 7 */ 8 9 #pragma once 10 11 // Portable wrapper around compiler/system specific things. 12 // The idea is to minimize #ifdef's in the app code. 13 14 #include "dsystem.h" // for alloca 15 16 #if _MSC_VER 17 typedef __int64 longlong; 18 typedef unsigned __int64 ulonglong; 19 #else 20 typedef long long longlong; 21 typedef unsigned long long ulonglong; 22 #endif 23 24 typedef unsigned char utf8_t; 25 26 struct Port 27 { 28 static int memicmp(const char *s1, const char *s2, size_t n); 29 static char *strupr(char *s); 30 31 static bool isFloat32LiteralOutOfRange(const char *s); 32 static bool isFloat64LiteralOutOfRange(const char *s); 33 34 static void writelongLE(unsigned value, void *buffer); 35 static unsigned readlongLE(void *buffer); 36 static void writelongBE(unsigned value, void *buffer); 37 static unsigned readlongBE(void *buffer); 38 static unsigned readwordLE(void *buffer); 39 static unsigned readwordBE(void *buffer); 40 static void valcpy(void *dst, uint64_t val, size_t size); 41 }; 42