#ifndef DATATYPES_H
#define DATATYPES_H


/***********************************************************************
 *    Includes                                                         *
 ***********************************************************************/
#include "../config.h"


/***********************************************************************
 *    Globale typedefs                                                 *
 ***********************************************************************/
#ifdef DOUBLE
typedef double fpv_t;
#  define FPV_C(a) a
#  define SCNfpv "lf"
#  define PRIfpv "e"
#else
typedef float fpv_t;
#  define FPV_C(a) a ## f
#  define SCNfpv "f"
#  define PRIfpv "e"
#endif

typedef struct vec_struct  vec_struct_t;
typedef struct vec_struct  *vec_t;
typedef struct part_struct part_struct_t;
typedef struct part_struct *part_t;

struct vec_struct {
	fpv_t x;
	fpv_t y;
	fpv_t z;
};

struct part_struct {
	vec_struct_t pos;
	vec_struct_t vel;
	fpv_t weight;
	fpv_t u;
	uint32_t id;
};


#endif /* DATATYPES_H */
