#pragma once

// clang-format off
typedef signed char         int8_t;     // NOLINT
typedef short               int16_t;    // NOLINT
typedef long                int32_t;    // NOLINT
typedef long long           int64_t;    // NOLINT
typedef unsigned char       uint8_t;    // NOLINT
typedef unsigned short      uint16_t;   // NOLINT
typedef unsigned long       uint32_t;   // NOLINT
typedef unsigned long long  uint64_t;   // NOLINT
#ifndef _MSC_VER
typedef unsigned long long  size_t;     // NOLINT
#endif
typedef long                intptr_t;   // NOLINT
typedef unsigned long       uintptr_t;  // NOLINT
typedef long int            ptrdiff_t;  // NOLINT
typedef unsigned char       BYTE;       // NOLINT
typedef unsigned short      WORD;       // NOLINT
typedef unsigned long       DWORD;      // NOLINT
typedef int                 BOOL;       // NOLINT
typedef int                 BOOLEAN;    // NOLINT
typedef float               FLOAT;      // NOLINT
typedef int                 INT;        // NOLINT
typedef unsigned int        UINT;       // NOLINT
typedef unsigned long       ULONG;      // NOLINT
typedef short               SHORT;      // NOLINT
typedef unsigned short      USHORT;     // NOLINT
typedef char                CHAR;       // NOLINT
typedef unsigned char       UCHAR;      // NOLINT
typedef signed char         INT8;       // NOLINT
typedef signed short        INT16;      // NOLINT
typedef signed int          INT32;      // NOLINT
typedef signed long long    INT64;      // NOLINT
typedef unsigned char       UINT8;      // NOLINT
typedef unsigned short      UINT16;     // NOLINT
typedef unsigned int        UINT32;     // NOLINT
typedef unsigned long long  UINT64;     // NOLINT
typedef long                LONG;       // NOLINT
typedef signed int          LONG32;     // NOLINT
typedef unsigned int        ULONG32;    // NOLINT
typedef uint64_t            ULONG64;    // NOLINT
typedef unsigned int        DWORD32;    // NOLINT
typedef uint64_t            DWORD64;    // NOLINT
typedef uint64_t            ULONGLONG;  // NOLINT
typedef void*               PVOID;      // NOLINT
typedef void*               HANDLE;     // NOLINT
typedef void*               FILE;       // NOLINT

#define NULL                (0)         // NOLINT

#ifndef __cplusplus
typedef __WCHAR_TYPE__      wchar_t;    // NOLINT
#define bool                _Bool       // NOLINT
#define true                1           // NOLINT
#define false               0           // NOLINT
#endif
// clang-format on
