#include "evararray.h"

#include "eintarray.h"
#include "eheap.h"

evararrayof<eintarray> getCatInds(const ebasearray& barr)
{
  evararrayof<eintarray> res;

  if (barr.size()==0) return(res);

  long tmpi,lasti;
  eintarray sind(iheapsort(barr));

  lasti=sind[0];
  eintarray *tarr=&res.add(barr.getvar(sind[0]),eintarray(sind[0]));
  for (int i=1; i<sind.size(); ++i){
    if (barr.getvar(sind[i]) != barr.getvar(lasti)) {
      tarr=&res.add(barr.getvar(sind[i]),eintarray());
      lasti=sind[i];
    }
    tarr->add(sind[i]);
  }
  return(res);
}

