#define CAML_NAME_SPACE
#include <caml/mlvalues.h>
#include "_pvr.h"

CAMLprim value
caml_pv_ci(value u)
{ pv_ci(); return Val_unit; }

CAMLprim value
caml_pv_bg(value caml_c)
{ int c[3];
  c[0]=Long_val(Field(caml_c,0));
  c[1]=Long_val(Field(caml_c,1));
  c[2]=Long_val(Field(caml_c,2));
  pv_bg(c); return Val_unit; }

CAMLprim value
caml_pv_cm(value caml_l, value caml_t)
{ int l[3];
  int t[3];
  l[0]=Long_val(Field(caml_l,0)); t[0]=Long_val(Field(caml_t,0));
  l[1]=Long_val(Field(caml_l,1)); t[1]=Long_val(Field(caml_t,1));
  l[2]=Long_val(Field(caml_l,2)); t[2]=Long_val(Field(caml_t,2));
  pv_cm(l, t); return Val_unit; }

CAMLprim value
caml_pv_ls(value caml_l, value caml_c)
{ int c[3];
  int l[3];
  l[0]=Long_val(Field(caml_l,0));
  l[1]=Long_val(Field(caml_l,1));
  l[2]=Long_val(Field(caml_l,2));

  c[0]=Long_val(Field(caml_c,0));
  c[1]=Long_val(Field(caml_c,1));
  c[2]=Long_val(Field(caml_c,2));

  pv_ls(l, c); return Val_unit; }

CAMLprim value
caml_pv_gs(value caml_l)
{ int l[3];
  l[0]=Long_val(Field(caml_l,0));
  l[1]=Long_val(Field(caml_l,1));
  l[2]=Long_val(Field(caml_l,2));

  pv_gs(l); return Val_unit; }

CAMLprim value
caml_pv_sh(value caml_c, value caml_r, value caml_t, value caml_p)
{ int c[3];
  int t[3];
  float r;
  float p[3];
  c[0]=Long_val(Field(caml_c,0));
  c[1]=Long_val(Field(caml_c,1));
  c[2]=Long_val(Field(caml_c,2));
  r=Double_val(caml_r);

  t[0]=Long_val(Field(caml_t,0));
  t[1]=Long_val(Field(caml_t,1));
  t[2]=Long_val(Field(caml_t,2));

  p[0]=Double_val(Field(caml_p,0));
  p[1]=Double_val(Field(caml_p,1));
  p[2]=Double_val(Field(caml_p,2));

  pv_sh(c, r, t, p); return Val_unit; }

CAMLprim value
caml_pv_gd(value caml_c1, value caml_c2)
{ int c1[3];
  int c2[3];
  c1[0]=Long_val(Field(caml_c1,0));
  c1[1]=Long_val(Field(caml_c1,1));
  c1[2]=Long_val(Field(caml_c1,2));

  c2[0]=Long_val(Field(caml_c2,0));
  c2[1]=Long_val(Field(caml_c2,1));
  c2[2]=Long_val(Field(caml_c2,2));

  pv_gd(c1, c2); return Val_unit; }

CAMLprim value
caml_pv_cb(value caml_h, value caml_c, value caml_p)
{ float h;
  int c[3];
  float p[3];
  c[0]=Long_val(Field(caml_c,0));
  c[1]=Long_val(Field(caml_c,1));
  c[2]=Long_val(Field(caml_c,2));
  h=Double_val(caml_h);
  p[0]=Double_val(Field(caml_p,0));
  p[1]=Double_val(Field(caml_p,1));
  p[2]=Double_val(Field(caml_p,2));
  pv_cb(h, c, p); return Val_unit; }

