#ifndef RIST_COMMON_ATTRIBUTES_H
#define RIST_COMMON_ATTRIBUTES_H
#if defined(_WIN32) || defined(__CYGWIN__)
# define RIST_PRIV
#else
# if __GNUC__ >= 4
# define RIST_PRIV __attribute__ ((visibility ("hidden")))
# else
# define RIST_PRIV
# endif
#endif
#ifdef _WIN32
#if defined(__GNUC__)
# define RIST_PACKED_STRUCT(sname,sbody) \
struct __attribute__((packed)) sname sbody;
#else
# define RIST_PACKED_STRUCT(sname,sbody) \
__pragma( pack(push, 1) ) \
struct sname sbody; \
__pragma( pack(pop) )
#endif
#else
# define RIST_PACKED_STRUCT(sname,sbody) \
struct __attribute__((packed)) sname sbody;
#endif
#ifdef __GNUC__
# define RIST_LIKELY(p) __builtin_expect(!!(p), 1)
# define RIST_UNLIKELY(p) __builtin_expect(!!(p), 0)
#else
# define RIST_LIKELY(p) (!!(p))
# define RIST_UNLIKELY(p) (!!(p))
#endif
#define RIST_MARK_UNUSED(unused_param) ((void)(unused_param))
#if defined(__GNUC__) && __GNUC__ >= 7
#define RIST_FALLTHROUGH ; __attribute__ ((fallthrough))
#else
#define RIST_FALLTHROUGH ((void)0)
#endif
#ifdef _WIN32
#ifdef _WIN64
#ifdef __GNUC__
#ifndef __MINGW32__
typedef long long ssize_t;
enum
{
POLLERR=0x1,
POLLHUP=0x2,
POLLNVAL=0x4,
POLLWRNORM=0x10,
POLLWRBAND=0x20,
POLLRDNORM=0x100,
POLLRDBAND=0x200,
POLLPRI=0x400,
};
#define POLLIN (POLLRDNORM|POLLRDBAND)
#define POLLOUT (POLLWRNORM|POLLWRBAND)
struct pollfd
{
int fd;
unsigned events;
unsigned revents;
};
struct pollfd;
#endif
#else
typedef __int64 ssize_t;
#endif
#else
typedef signed int ssize_t;
#endif
#endif
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
#endif