let add a v =
  let len = Array.length a.data in
  if a.length < len then
    (
     a.data.(a.length) <- v ;
     a.length <- a.length + 1
    )
  else
    (
     (* we must increase the array's size *)
     let t = Array.create a.step v in
     a.data <- Array.append a.data t;
     a.length <- a.length + 1;
    );
  a.length - 1