12 typedef std::deque< Persona* > prefs_type;
13 typedef std::deque< Persona* > ofertas_type;
14 typedef std::deque< Persona* > rechazos_type;
16 /// Estados posibles de una persona
17 enum estado_type { SOLTERO, DECLARADO, COMPROMETIDO };
20 enum sexo_type { M, F };
23 Persona(const std::string& nombre, sexo_type sexo);
25 /// Nombre de la persona, sólo con fines de representación
28 /// Lista de personas que prefiere, la primera de la lista es la
29 /// que mejor posicionada esta
32 /// Estado de la persona
38 /// De estar declarado o comprometido, quien es su pareja
41 /// Lista de la gente que se le declaro
44 /// Lista de la gente que lo rechazo
45 rechazos_type rechazos;
47 /// Función de comparación entre dos personas según nuestras prefs
48 bool cmp(const Persona& p1, const Persona& p2) const;
50 /// Ordenamos las ofertas según nuestras preferencias
51 void ordenar_ofertas();
53 /// Nos declaramos a la persona p
54 void declarar_a(Persona& p);
56 /// Nos comprometemos con la persona p, quien se nos habia declarado
58 void comprometer_con(Persona& p);
60 // Nos comprometemos con la otra persona y a ella la comprometemos con nosotros
61 void comprometer_con_bt(Persona& p);
63 // Rompemos el compromiso
64 void romper_compromiso(Persona& p);
67 /// Para representación
68 std::ostream& operator<< (std::ostream& os, const Persona::estado_type e);
70 /// Para representación
71 std::ostream& operator<< (std::ostream& os, const Persona& p);