/** * @file obitypes.h * @author Celine Mercier * @date 18 May 2015 * @brief Header file for the OBITypes. */ #ifndef OBITYPES_H_ #define OBITYPES_H_ #include #include #include #define OBIInt_NA (INT32_MIN) #define OBIFloat_NA (NAN) #define OBIIdx_NA (SIZE_MAX) /** * @brief enum for the boolean OBIType. */ typedef enum { FALSE = 0, TRUE = 1, OBIBool_NA = 2 } OBIBool_t, *OBIBool_p; /**< a boolean true/false value */ /** * @brief enum OBITypes for the data type of the OBIColumns. */ typedef enum OBIType { OBI_VOID = 0, /**< data type not specified */ OBI_INT, /**< a signed integer value (C type : int32_t) */ OBI_FLOAT, /**< a floating value (C type : double) */ OBI_CHAR, /**< a character (C type : char) */ OBI_IDX /**< an index in a data structure (C type : size_t) */ } OBIType_t, *OBIType_p; typedef int32_t obiint_t; typedef double obifloat_t; typedef char obichar_t; typedef size_t obiidx_t; /** * @brief returns the memory size in bytes of an OBIType * * @param type the OBIType code used as query * * @return the size in bytes of the type * @retval 0 on error (unknown type) * * @since May 2015 * @author Eric Coissac (eric.coissac@metabarcoding.org) */ size_t obi_sizeof(OBIType_t type); /** * @brief returns the size requested to store an array of OBIType * * The returned size is enouth large to store an array of size nbelement * but rounded at a multiple of the memory page size. * * @param type the OBIType code used as query * @param nbelement the number of element to be stored * * @return the size in bytes of the type * @retval 0 on error (unknown type) * * @since May 2015 * @author Eric Coissac (eric.coissac@metabarcoding.org) */ size_t obi_array_sizeof(OBIType_t type,size_t nbelement); #endif /* OBITYPES_H_ */