public void altaIndiceSecundario(string llave, long direccion, string directorio) { bool band; band = this.tipo.Equals('C'); Secundario secunadrio; if (this.dirIndice == -1) { int tam; tam = MetodosAuxiliares.calculaTamIdxPrim(this.longitud); secunadrio = new Secundario(this.nombre, this.dirIndice, tam, this.longitud, -1, band); this.indices.Add(secunadrio); this.dirIndice = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); this.grabaDireccionesSecundario(directorio, secunadrio); for (int i = 0; i < secunadrio.Direcciones.Length; i++) { secunadrio.Direcciones[i] = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); this.grabaApuntadoresSecundario(directorio, secunadrio, secunadrio.Direcciones[i], i); } } int idx; secunadrio = ((Secundario)this.indices.First()); idx = secunadrio.alta(llave, direccion); this.grabaApuntadoresSecundario(directorio, secunadrio, secunadrio.Direcciones[idx], idx); this.grabaDireccionesSecundario(directorio, secunadrio); }
public void altaHash(string llave, long direccion, string directorio) { bool band; band = false; band = this.tipo.Equals('C'); if (this.dirIndice == -1) { HashEstatica hash; hash = new HashEstatica(this.nombre, this.dirIndice, this.longitud, -1, band); this.indices.Add(hash); this.dirIndice = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); this.grabaDireccionesHash(directorio, hash); for (int i = 0; i < hash.Direcciones.Length; i++) { hash.Direcciones[i] = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); this.grabaApuntadoresHash(directorio, hash, hash.Direcciones[i], i); } this.grabaDireccionesHash(directorio, hash); } int idx; idx = ((HashEstatica)this.indices.First()).alta(band, MetodosAuxiliares.truncaCadena(llave).ToCharArray(), this.longitud, direccion); this.grabaApuntadoresHash(directorio, ((HashEstatica)this.indices.First()), ((HashEstatica)this.indices.First()).Direcciones[idx], idx); }
public void altaIndicePrimario(string llave, long dir, string directorio) { int longitud; long dirIdx; Indice indice; dirIdx = -1; longitud = MetodosAuxiliares.calculaTamIdxPrim(this.longitud); dirIdx = MetodosAuxiliares.ultimaDireccionDeArchivo(directorio); if (this.indices.Count == 0) { indice = new Primario(this.nombre, dirIdx, longitud, -1); ((Primario)indice).alta(llave, dir); this.indices.Add(indice); } else { bool band; band = false; foreach (Indice idx in this.indices) { if (((Primario)idx).EspacioLibre != -1) { ((Primario)idx).alta(llave, dir); band = true; break; } } if (!band) { indice = new Primario(this.nombre, dirIdx, longitud, -1); ((Primario)indice).alta(llave, dir); this.indices.Last().DirSig = indice.DirAct; this.indices.Add(indice); } } this.dirIndice = this.indices.First().DirAct; foreach (Indice idx in this.indices) { this.grabaIndicePrimario((Primario)idx, directorio); } }