#ifndef STDDEF_H
#define STDDEF_H

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );

#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 */
