13 typedef std::deque< Persona* > prefs_type;
14 typedef std::deque< Persona* > ofertas_type;
15 typedef HashTable rechazos_type;
16 typedef HashTable::size_type size_type;
18 /// Estados posibles de una persona
19 enum estado_type { SOLTERO, DECLARADO, COMPROMETIDO };
22 enum sexo_type { M, F };
25 Persona(const std::string& nombre, sexo_type sexo, size_type cap);
27 /// Nombre de la persona, sólo con fines de representación
30 /// Lista de personas que prefiere, la primera de la lista es la
31 /// que mejor posicionada esta
34 /// Estado de la persona
40 /// De estar declarado o comprometido, quien es su pareja
43 /// Lista de la gente que se le declaro
46 /// Lista de la gente que lo rechazo
47 rechazos_type rechazos;
49 /// Función de comparación entre dos personas según nuestras prefs
50 int cmp(const Persona& p1, const Persona& p2) const;
52 /// Ordenamos las ofertas según nuestras preferencias
53 void ordenar_ofertas();
55 /// Nos declaramos a la persona p
56 void declarar_a(Persona& p);
58 /// Nos comprometemos con la persona p, quien se nos habia declarado
60 void comprometer_con(Persona& p);
62 // Nos comprometemos con la otra persona y a ella la comprometemos con nosotros
63 void comprometer_con_bt(Persona& p);
65 // Rompemos el compromiso
66 void romper_compromiso(Persona& p);
69 /// Para representación
70 std::ostream& operator<< (std::ostream& os, const Persona::estado_type e);
72 /// Para representación
73 std::ostream& operator<< (std::ostream& os, const Persona& p);