Driver::Registro RNRS(const modulos::Registro& r){ // Registro Nuestro a Registro Suyo const Dicc<String,modulos::Dato> dc = r.DameDic(); typename Dicc<String,modulos::Dato>::const_Iterador it = dc.CrearIt(); Driver::Registro res; while(it.HaySiguiente()){ Driver::Dato d = DNDS( it.SiguienteSignificado() ); res.Definir( it.SiguienteClave(), d); it.Avanzar(); } return res; }
campusSeguro::campusSeguro(campus c, Dicc<Agente,Posicion> d) { campus camp = c; DiccPalabra<Posicion> estyHip;// creo un DiccTrie vacio. campusSeguro::DatosPos tup; tup.id = 4; tup.tag = "libre"; tup.placa = 0; Nat cantidadFilas=c.Filas(); Nat cantidadColumnas=c.Columnas(); diccMatriz<campusSeguro::DatosPos> datosMatriz(cantidadFilas,cantidadColumnas,tup); diccHash<Agente,campusSeguro::Datos> dicc(d.CantClaves()); // creo dicchash de tamaño d.Claves().Cardinal() diccHash<Agente,campusSeguro::Datos>::Iterador itHashVacio = dicc.CrearIt(); tup.datosAgente = itHashVacio; ConjsEqu<Agente> equSan; // creo un EqusEqu vacio y lo guardo en la variable equSan. campusSeguro::DatosSanciones KSan; Nat i = 0; Nat j = 0; while( i < c.Filas() ) { while( j< c.Columnas()) { //Posicion pos(i,j); // creo una posicion (i,j). Posicion p; p.x = i; p.y = j; campusSeguro::DatosPos data; // ESTA VARIABLE NO SE SI VA DENTRO DEL SCOPE DEL WHILE, xq SE BORRA. if( _campus.Posocupada(p)) { data.id = 0; data.tag = "ocupada"; data.placa = 0; data.datosAgente = itHashVacio; datosMatriz.Definir(p, data); } j++; }// endwhile i++; }// endwhile Dicc<Agente,Posicion>::Iterador it; it = d.CrearIt(); while( it.HaySiguiente() ) { campusSeguro::DatosPos data; // ESTA VARIABLE NO SE SI VA DENTRO DEL SCOPE DEL WHILE, xq SE BORRA. campusSeguro::Datos dataH; Posicion pos; Agente plak; ConjsEqu<Agente>::Iterador itEqu; plak = it.SiguienteClave(); pos = it.SiguienteSignificado(); itEqu = equSan.relacionar(0, plak); dataH.pos = pos; dataH.Sanciones = 0; dataH.hippiesAtrapados = 0; dataH.claseConMismasSanciones = itEqu; data.id = 3; data.tag = "agente"; data.placa = plak; data.datosAgente = dicc.Definir(plak, dataH); // definir retorna un iterador de Dicc. datosMatriz.Definir(pos, data); it.Avanzar(); } Arreglo<TuplaAgYSan> nuevoArreglo(1); // creo array de 1 posicion KSan.arreglo = nuevoArreglo; // meto el arreglo en el campo arreglo de KSan. KSan.buffer = false; KSan.itMenosSanciones = equSan.CrearIt(); // el masvigilante al comienzo de la instancia campusSeguro es cualquier vigilante: campusSeguro::DatosAgentesyAtrapados elMas; Dicc<Agente,Posicion>::Iterador itAgts = d.CrearIt(); elMas.agente = itAgts.SiguienteClave();// el primer agente que encuentre. elMas.cantAtrapados = 0; // incio la instancia: _campus = camp; _estudiantes = estyHip; _hippies = estyHip; Conj<Agente> conjuntoDeAgentes; // conjunto vacio que almacenará agentes Dicc<Agente,Posicion>::Iterador itDiccAgentes = d.CrearIt(); while(itDiccAgentes.HaySiguiente()) // voy llenando el conjunto con los agentes del diccionario. { conjuntoDeAgentes.AgregarRapido(itDiccAgentes.SiguienteClave()); itDiccAgentes.Avanzar(); } _agentes = conjuntoDeAgentes; datosAgentes = dicc; grilla = datosMatriz; _masVigilante = elMas; equivalenciaSanciones = equSan; KSanciones = KSan; Dicc<Agente,Posicion>::Iterador it2; it2 = d.CrearIt(); } // fin funcion constructora (rastrillaje).