pylon/Platform.h#
Defines#
Name | |
---|---|
PYLON_WIN_BUILD Is defined, when using the pylon for Windows API. | |
PYLON_HAS_AVI_SUPPORT | |
PYLON_HAS_MALLOC_H | |
PYLON_32_BUILD | |
APIEXPORT | |
APIIMPORT | |
PUBLIC_INTERFACE | |
PYLON_DEPRECATED(x) | |
PYLON_PACKING | |
GENICAM_USER_ACCEPTS_ANY_COMPILER | |
PYLON_6_0_DEPRECATED(message) |
Macros Documentation#
define PYLON_WIN_BUILD#
#define PYLON_WIN_BUILD
Is defined, when using the pylon for Windows API.
define PYLON_HAS_AVI_SUPPORT#
#define PYLON_HAS_AVI_SUPPORT
define PYLON_HAS_MALLOC_H#
#define PYLON_HAS_MALLOC_H
define PYLON_32_BUILD#
#define PYLON_32_BUILD
define APIEXPORT#
#define APIEXPORT __declspec(dllexport)
define APIIMPORT#
#define APIIMPORT __declspec(dllimport)
define PUBLIC_INTERFACE#
#define PUBLIC_INTERFACE
define PYLON_DEPRECATED#
#define PYLON_DEPRECATED(
x
)
__declspec(deprecated)
define PYLON_PACKING#
#define PYLON_PACKING 8
define GENICAM_USER_ACCEPTS_ANY_COMPILER#
#define GENICAM_USER_ACCEPTS_ANY_COMPILER
define PYLON_6_0_DEPRECATED#
#define PYLON_6_0_DEPRECATED(
message
)
PYLON_DEPRECATED(message)
Source code#
//-----------------------------------------------------------------------------
// Basler pylon SDK
// Copyright (c) 2008-2022 Basler AG
// http://www.baslerweb.com
// Author: Thomas Koeller
//-----------------------------------------------------------------------------
#if !defined(PYLON_PLATFORM_H)
#define PYLON_PLATFORM_H
#if defined (_MSC_VER) && defined (_WIN32)
// Platform Microsoft windows, Microsoft tool chain
# define PYLON_WIN_BUILD // we are building for windows
# define PYLON_HAS_AVI_SUPPORT
# define PYLON_HAS_MALLOC_H
// define PYLON_XX_BUILD to distinguish between 32 & 64 bit builds
# if defined(_WIN32) && !defined(_WIN64)
# define PYLON_32_BUILD
# elif defined(_WIN32) && defined(_WIN64)
# define PYLON_64_BUILD
# else
# error unsupported wordsize (32/64 platform)
# endif
# if defined(PYLON_STATIC)
# define APIEXPORT
# define APIIMPORT
# define PUBLIC_INTERFACE
# else
# define APIEXPORT __declspec(dllexport)
# define APIIMPORT __declspec(dllimport)
# define PUBLIC_INTERFACE
# endif
# if !defined(CDECL)
# define CDECL
# endif
# if defined PYLON_NO_DEPRECATE
# define PYLON_DEPRECATED(x)
# else
# if _MSC_VER >= 1400
# define PYLON_DEPRECATED(x) __declspec(deprecated(x))
# else
# define PYLON_DEPRECATED(x) __declspec(deprecated)
# endif
# endif
// packing used for pylon structs/classes
# define PYLON_PACKING 8
#elif (defined(__GNUC__) && defined(__linux__)) || defined(__APPLE__)
// Platform Linux, gcc or Darwin, llvm toolchain
#ifdef __APPLE__
// Platform Darwin / OS X
# define PYLON_OSX_BUILD
# define PYLON_HAS_BYTEORDER
#else
# define PYLON_LINUX_BUILD
// Platform Linux
# define PYLON_HAS_MALLOC_H
# define PYLON_HAS_BYTESWAP
# define PYLON_HAS_THREADCAP
#endif
# define PYLON_UNIX_BUILD
# define PYLON_HAS_POSIX_THREADS
//TODO this works only on a C99 compiler. We must ensure, that things like SIZE_MAX UINTPTR_MAX are always defined
#if !defined(__STDC_LIMIT_MACROS)
# define __STDC_LIMIT_MACROS
#endif
#if !defined(__STDC_CONSTANT_MACROS)
# define __STDC_CONSTANT_MACROS
#endif
#if !defined(__STDC_FORMAT_MACROS)
# define __STDC_FORMAT_MACROS // for PRI* in inttypes.h
#endif
# include <pylon/api_autoconf.h>
# include <stdint.h>
// gnu compiler needs explicit visibility of interfaces, so dynamic_cast works
# define PUBLIC_INTERFACE APIEXPORT
// define PYLON_XX_BUILD to distinguish between 32 & 64 bit builds
// __WORDSIZE is not always defined and sometimes set to 32 on 64 bit platforms. So we prefer other sources.
# if __GNUC__
# if __x86_64__ || __ppc64__ || __powerpc64__ || __aarch64__
# define PYLON_64_BUILD
# else
# define PYLON_32_BUILD
# endif
# else
// Fallback to the unsafe wordsize method
# if __WORDSIZE == 32
# define PYLON_32_BUILD
# elif __WORDSIZE == 64
# define PYLON_64_BUILD
# else
# error unsupported wordsize (32/64 platform)
# endif
# endif
// packing used for pylon structs/classes
# define PYLON_PACKING 8
#else
# error Unsupported platform
#endif
// Architecture
#if defined(__arm__) || defined(__thumb__) || defined(_ARM) || defined(_M_ARM) || defined(_M_ARMT) || defined(__arm) || defined(__aarch64__) || defined(_M_ARM64)
# define PYLON_ARM_BUILD
#endif
#if defined(i386) || defined(__i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(_M_I86) || defined(_M_IX86) || defined(_X86_) || defined(__X86__) || defined(__I86__) || defined(_M_AMD64) || defined(_M_X64)
# define PYLON_INTEL_BUILD
#endif
// The GENICAM_BUILD define has been removed in GenICam 3.0.
#if defined(GENICAM_BUILD) && defined(PYLON_WIN_BUILD)
#pragma message("The GENICAM_BUILD define has been deprecated and can therefore be removed.")
#endif
// Check whether the GenICam header (GCLinkage.h) has been included before this one as this leads to wrong DLL suffixes in debug builds.
#if defined(LINKAGE_H) && defined(PYLON_WIN_BUILD) && !defined(GENICAM_NO_AUTO_IMPLIB) && !defined(GENICAM_USER_ALWAYS_LINK_RELEASE) && (defined(_DEBUG) || defined(DEBUG)) && !defined(PYLON_BUILD_DEBUG)
#error You must include pylon/Platform.h (or at least define GENICAM_USER_ALWAYS_LINK_RELEASE) before including any GenICam headers. Note: If you include only pylon/PylonIncludes.h this will be done automatically.
#endif
// Turn off GenICam compiler warning about untested compiler.
#if !defined(GENICAM_USER_ACCEPTS_ANY_COMPILER)
# define GENICAM_USER_ACCEPTS_ANY_COMPILER
#endif
// Macro for deprecated classes in pylon 6.0
#if defined(PYLON_6_0_NO_DEPRECATE) || defined(PYLON_UNIX_BUILD)
# define PYLON_6_0_DEPRECATED(message)
#else
# define PYLON_6_0_DEPRECATED(message) PYLON_DEPRECATED(message)
#endif
#endif /* !defined(PYLON_PLATFORM_H) */
Updated on 5 July 2022 at 15:30:01