/* Used with the ocl_types.cl test */

// image1d_t
typedef image1d_t img1d_t;

// image1d_array_t
typedef image1d_array_t img1darr_t;

// image1d_buffer_t
typedef image1d_buffer_t img1dbuff_t;

// image2d_t
typedef image2d_t img2d_t;

// image2d_array_t
typedef image2d_array_t img2darr_t;

// image3d_t
typedef image3d_t img3d_t;

// sampler_t
typedef sampler_t smp_t;

// event_t
typedef event_t evt_t;

#if __OPENCL_VERSION__ >= 200

// clk_event_t
typedef clk_event_t clkevt_t;

// queue_t
typedef queue_t q_t;

// reserve_id_t
typedef reserve_id_t reserveid_t;

// image2d_depth_t
typedef image2d_depth_t img2ddep_t;

// image2d_array_depth_t
typedef image2d_array_depth_t img2darr_dep_t;

#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable
// image2d_msaa_t
typedef image2d_msaa_t img2dmsaa_t;

// image2d_array_msaa_t
typedef image2d_array_msaa_t img2darrmsaa_t;

// image2d_msaa_depth_t
typedef image2d_msaa_depth_t img2dmsaadep_t;

// image2d_array_msaa_depth_t
typedef image2d_array_msaa_depth_t img2darrmsaadep_t;

// pipe specifier

typedef struct _person {
  int id;
  const char *name;
} Person;

void int_pipe_function(pipe int);

void person_pipe_function(pipe Person);
#endif
