#ifndef STDDEF_H
#define STDDEF_H

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
FILE_SECBOOT ( PERMITTED );

#include <stdint.h>

/** EFI headers also define NULL */
#undef NULL

/** Null pointer */
#define NULL ( ( void * ) 0 )

/**
 * Get offset of a field within a structure
 *
 * @v type		Structure type
 * @v field		Field within structure
 * @ret offset		Offset within structure
 */
#if defined ( __GNUC__ ) && ( __GNUC__ > 3 )
#define offsetof( type, field ) __builtin_offsetof ( type, field )
#else
#define offsetof( type, field ) ( ( size_t ) &( ( ( type * ) NULL )->field ) )
#endif

/**
 * Get containing structure
 *
 * @v ptr		Pointer to contained field
 * @v type		Containing structure type
 * @v field		Field within containing structure
 * @ret container	Pointer to containing structure
 */
#define container_of( ptr, type, field ) ( {				\
	type *__container;						\
	const volatile typeof ( __container->field ) *__field = (ptr);	\
	__container = ( ( ( void * ) __field ) -			\
			offsetof ( type, field ) );			\
	__container; } )

/* __WCHAR_TYPE__ is defined by gcc and will change if -fshort-wchar is used */
#ifndef __WCHAR_TYPE__
#define __WCHAR_TYPE__ uint16_t
#endif
#ifndef __WINT_TYPE__
#define __WINT_TYPE__ int
#endif
typedef __WCHAR_TYPE__ wchar_t;
typedef __WINT_TYPE__ wint_t;

#endif /* STDDEF_H */
