Program Listing for File Platform.hpp

Return to documentation for file (include/nix/Platform.hpp)

// Copyright © 2014 German Neuroinformatics Node (G-Node)
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted under the terms of the BSD License. See
// LICENSE file in the root of the Project.
//
// Author: Christian Kellner <kellner@bio.lmu.de>

#ifdef _WIN32
 #ifndef NIX_STATIC
  #ifdef NIXEXPORT
   #define NIXAPI __declspec(dllexport)
  #else
   #define NIXAPI __declspec(dllimport)
  #endif
 #else // NIX_STATIC
   #define NIXAPI
 #endif // NIX_STATIC
#pragma warning(disable: 4250 4251 4275)

 //workaround for missing ssize_t on windows
 #ifndef ssize_t
   #ifdef _WIN64
     #include <BaseTsd.h>
     typedef SSIZE_T ssize_t;
   #else
     //hdf5 defines ssize_t to be int on 32bit Win
     typedef int ssize_t;
   #endif
 #endif
#else
 #define NIXAPI
#endif

#ifdef _MSC_VER
#define NOEXCEPT
#define NIX_PACKED
#else
#define NOEXCEPT noexcept
#define NIX_PACKED __attribute__((packed))
#endif

#define NIX_SRC_FILE __FILE__
#define NIX_SRC_LINE __LINE__

#ifndef _MSC_VER
#define NIX_SRC_FUNC  __PRETTY_FUNCTION__
#else
#define NIX_SRC_FUNC __FUNCSIG__
#endif

#ifndef __has_builtin
#define __has_builtin(x) 0
#endif

#ifdef _MSC_VER
#define DEPRECATED __declspec(deprecated)
#elif defined(__GNUC__) | defined(__clang__)
#define DEPRECATED __attribute__((__deprecated__))
#else
#define DEPRECATED
#endif