Files
epics-base/modules/libcom/src/misc/dbDefs.h
Andrew Johnson 3c99391d93 Added SPDX License ID to all EPICS-original source files
In some cases the license-identification header was missing,
so I added that as well. Replaced the remaining headers that
specifically identified "Versions 3.13.7 and higher".

Makefiles and the build system were deliberately excluded.
2020-08-03 11:53:01 -05:00

85 lines
2.4 KiB
C

/*************************************************************************\
* Copyright (c) 2009 UChicago Argonne LLC, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* SPDX-License-Identifier: EPICS
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/**
* \file dbDefs.h
* \author Marty Kraimer
*
* \brief Miscellaneous macro definitions.
*
* This file defines several miscellaneous macros.
*/
#ifndef INC_dbDefs_H
#define INC_dbDefs_H
#include <stddef.h>
#ifdef TRUE
# undef TRUE
#endif
#define TRUE 1
#ifdef FALSE
# undef FALSE
#endif
#define FALSE 0
/** \brief Deprecated synonym for \c static */
#ifndef LOCAL
# define LOCAL static
#endif
/** \brief Number of elements in array */
#ifndef NELEMENTS
# define NELEMENTS(array) (sizeof (array) / sizeof ((array) [0]))
#endif
/** \brief Deprecated synonym for \c offsetof */
#ifndef OFFSET
# define OFFSET(structure, member) offsetof(structure, member)
#endif
/** \brief Find parent object from a member pointer
*
* Subtracts the byte offset of the member in the structure from the
* pointer to the member itself, giving a pointer to parent strucure.
* \param ptr Pointer to a member data field of a structure
* \param structure Type name of the parent structure
* \param member Field name of the data member
* \return Pointer to the parent structure
* \note Both GCC and Clang will type-check this macro.
*/
#ifndef CONTAINER
# ifdef __GNUC__
# define CONTAINER(ptr, structure, member) ({ \
const __typeof(((structure*)0)->member) *_ptr = (ptr); \
(structure*)((char*)_ptr - offsetof(structure, member)); \
})
# else
# define CONTAINER(ptr, structure, member) \
((structure*)((char*)(ptr) - offsetof(structure, member)))
# endif
#endif
/** \brief Size of a record name including the nil terminator */
#define PVNAME_STRINGSZ 61
/** \brief Size of a record name without the nil terminator */
#define PVNAME_SZ (PVNAME_STRINGSZ - 1)
/** \brief Buffer size for the string representation of a DBF_*LINK field
*/
#define PVLINK_STRINGSZ 1024
/** \brief dbAccess enums/menus can have up to this many choices */
#define DB_MAX_CHOICES 30
#endif /* INC_dbDefs_H */