/*
    $Id: ppdtriple.h 1107 2007-04-16 23:59:13Z rvernica $

    Copyright (C) 2007 by The Regents of the University of California

    Redistribution of this file is permitted under the terms of the
    GNU Public License (GPL).

    Date: 01/14/2006
    Author: Rares Vernica <rvernica@ics.uci.edu>
*/

#ifndef _ppdtriple_h_
#define _ppdtriple_h_

#include <list>

#include "simfunc/simdist.h"
#include "simfunc/simvect.h"

using namespace std;

class PPDTriple {
public:
  unsigned query, pivot, str;
  SimVect vect1, vect2;
  SimType dist;

  PPDTriple(): query(0), pivot(0), str(0), dist(0) {}
  PPDTriple(unsigned q, unsigned p, unsigned s, SimVect v1, SimVect v2, SimType d): 
    query(q), pivot(p), str(s), vect1(v1), vect2(v2), dist(d) {}

  friend ostream& operator<<(ostream &out, const PPDTriple &t);
  friend istream& operator>>(istream &in, PPDTriple &t);
  friend bool operator<(const PPDTriple &left, const PPDTriple &right);
};

typedef list<PPDTriple> ListPPDTriple;
typedef ListPPDTriple::iterator ListPPDTripleIt;

#endif
