Files
handleaiuinew/env/basler/include/pylon/stdinclude.h
T

110 lines
3.6 KiB
C++
Raw Normal View History

2024-05-18 23:53:26 +08:00
//-----------------------------------------------------------------------------
// Basler pylon SDK
// Copyright (c) 2006-2023 Basler AG
// http://www.baslerweb.com
// Author: Hartmut Nebelung
//-----------------------------------------------------------------------------
/*!
\file
\brief standard definitions
*/
#ifndef __STDINCLUDE_H__
#define __STDINCLUDE_H__
#include <assert.h>
#include <pylon/Platform.h>
#ifdef _MSC_VER
# pragma pack(push, PYLON_PACKING)
#endif /* _MSC_VER */
#ifdef PYLON_WIN_BUILD
# include <objbase.h> // for definition of type 'interface'
#endif
///////////////////////////////////////////////////////////////////////////////
// Note:
///////////////////////////////////////////////////////////////////////////////
// The PY_ macros are only for backward compatibility
// please use the PYLON_ macros instead. Thank you!
///////////////////////////////////////////////////////////////////////////////
// mark a variable as unused. This prevents unused parameter / unused local variable warnings on warning level 4.
#define PYLON_UNUSED(unused_var) ((void)(unused_var))
#define PY_UNUSED(unused_var) PYLON_UNUSED(unused_var)
// returns the number of elements in an array
#define PYLON_COUNTOF(arr) (sizeof(arr)/sizeof(*arr))
#define PY_COUNTOF(arr) PYLON_COUNTOF(arr)
// PY_ASSERT works like normal assertion
#define PYLON_ASSERT(cond) assert(cond)
#define PY_ASSERT(cond) PYLON_ASSERT(cond)
// PY_ASSERT2 works like a normal assertion but can be passed a descriptive text string
#define PYLON_ASSERT2(cond, tx) assert((cond) && tx)
#define PY_ASSERT2(cond, tx) PYLON_ASSERT2(cond, tx)
// verify macro
#ifndef NDEBUG
// assert in debug builds but do not remove in release builds
# define PYLON_VERIFY(cond) PYLON_ASSERT(cond)
# define PY_VERIFY(cond) PYLON_ASSERT(cond)
// assert in debug builds but do not remove in release builds but can be passed a descriptive text string
# define PYLON_VERIFY2(cond, tx) PYLON_ASSERT2(cond, tx)
# define PY_VERIFY2(cond, tx) PYLON_ASSERT2(cond, tx)
#else
# define PYLON_VERIFY(cond) ((void)(cond))
# define PY_VERIFY(cond) ((void)(cond))
# define PYLON_VERIFY2(cond, tx) PYLON_VERIFY(cond)
# define PY_VERIFY2(cond, tx) PYLON_VERIFY(cond)
#endif
#if defined(PYLON_WIN_BUILD)
# if defined(PYLON_32_BUILD)
# define PYLON_UNALIGNED
# elif defined(PYLON_64_BUILD)
# define PYLON_UNALIGNED __unaligned
# endif
#elif defined(PYLON_UNIX_BUILD)
# define PYLON_UNALIGNED
#else
# error Invalid platform
#endif
// Attention in MSVC this is a string literal
// but under gnuc this is a local variable!
#if defined(_MSC_VER) && _MSC_VER >= 1300
// Attention this does not behave like a string literal! Use it as a variable of type const char[]
# define PYLON_FUNC __FUNCTION__
#elif defined(__GNUC__)
// Attention this does not behave like a string literal! Use it as a variable of type const char[]
# define PYLON_FUNC __func__
#else
// Attention this does not behave like a string literal! Use it as a variable of type const char[]
# define PYLON_FUNC "sorry_funcname_na"
#endif
// namespace aliases
#include <Base/GCNamespace.h>
#include <GenApi/GenApiNamespace.h>
#include <pylon/TypeMappings.h> // for String_t, StringList_t
namespace Pylon
{
/// Pylon's string definition
typedef GenICam::gcstring String_t;
/// Pylon's string list definition
typedef GenICam::gcstring_vector StringList_t;
}
#ifdef _MSC_VER
# pragma pack(pop)
#endif /* _MSC_VER */
#endif //__STDINCLUDE_H__