コード例 #1
0
ファイル: CEntrada.cs プロジェクト: miguellgt/file-structures
 /**Inicialización de sus atributos*/
 public CEntrada(CCubeta c,long miDir)
 {
     dir = miDir;
     dirCubeta = c.getDir();
     sigEntrada = -1;
     cubeta = c;
 }
コード例 #2
0
        /**´Méetodo principal para llevar a cabo la inserción de algun bloque*/
        public bool Alta_HashDinamica(CNodoEntidad e, CBloque b)
        {
            /**
             * \param e Entidad a la que pertrnece el bloque
             * \param b Bloque Nuevo bloque a insertar
             * \return Retorna Falso(Si tuvo exito), True(Si ya existe el bloque alguna cubeta)
             * */
            CCubeta cubetaAux;
            CEntrada entradaAux;
            bool res = false;

            if (e.getApCabDatos() == -1)
            {
                tHashExt = new CTablaHashExt(); 
                cubetaAux = new CCubeta(-1, TAM_CUBETA); 
                entradaAux = new CEntrada(cubetaAux, -1);
                
                tHashExt.insEntrada(entradaAux);

                cubetaAux.setDir(getArchivo().ENDF());
                getArchivo().EscribeCubeta(cubetaAux);

                entradaAux.setDirCubeta(cubetaAux.getDir());
                entradaAux.setDir(getArchivo().ENDF());
                getArchivo().EscribeEntrada(entradaAux);

                tHashExt.setCabEntradas(entradaAux.getDir());
                tHashExt.setDir(getArchivo().ENDF());
                getArchivo().EscribeTablaHashExt(tHashExt);

                e.setApCabDatos(tHashExt.getDir());
                getArchivo().escribeEntidad(e, e.getDir());
            }
            else
                tHashExt = getArchivo().LeerTablaHashExt(e.getApCabDatos());

            b.setDir(getArchivo().ENDF());
         
            if ((res = InsBloque(b)) == false)
            {
                tHashExt.incNumReg();
                getArchivo().EscribeTablaHashExt(tHashExt);
            }

            return (res);
        }
コード例 #3
0
ファイル: CEntrada.cs プロジェクト: miguellgt/file-structures
 public void setCubeta(CCubeta nueva)
 {
     cubeta = nueva;
     setDirCubeta(nueva.getDir());
 }
コード例 #4
0
ファイル: CArchivo.cs プロジェクト: miguellgt/file-structures
        /**Se escribe un objeto cubeta de la organizacion Hash Dinamica en el archivo de trabajo
         * \param cubeta Cubeta a escribir, ya cuenta con su direccion en el archivo*/
        public void EscribeCubeta(CCubeta cubeta)
        {
            bw.BaseStream.Seek(cubeta.getDir(), SeekOrigin.Begin);

            bw.Write(cubeta.getDir());
            bw.Write(cubeta.getTamaño());
            bw.Write(cubeta.getNumDirBloques());
            bw.Write(cubeta.getPrefAsoc());

            for (int i = 0; i < cubeta.getTamaño(); bw.Write(cubeta.getAtDirBloque(i)), i++) ;
        }