Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





FilePacker -Zaelsius

Iniciado por ethernet, 25 de Mayo de 2003, 06:45:25 PM

« anterior - próximo »

ethernet



    Aquí está (por fin) el código del packer enviado por Zaelsius. El código esta perfectamente comentado y además ha enviado un documento (que he decidido no ponerlo aqui para que no perdiera su formato original) por lo cual os remito a ese documento y al código para enteraros como funciona ;). Lo puedes descargar de la siguiente dirección:

    Documento:   http://www.stratos-ad.com/codigosemana/zspack-1.zip
    Código fuente:  http://www.alu.ua.es/j/jgf8/code/zspack-1-0.rar   (incluye el documento anterior)

    Autor:   Julio Gorgé, a.k.a. Zaelsius
    Web:   http://zsgames.tk





        Éste código fue enviado por Zaelsius
        Si quieres enviar tu propio código hazlo a  
    eth_cotd@lycos.es

    Zaelsius

                                    La verdad es que me hubiera gustado incluir carga de ficheros "transparente", como hacen otras librerias, que comprueban si el fichero está en disco o está en el paquete y después lo cargan, pero al final no lo he puesto...

    ¿Wish list para la siguiente version? :D                                

    ethernet

    De eso no debiera ocuparse una capa superior ? como una clase (o llamalo X) filesysstem q se encargará de buscar paquetes ficheros y demás.

    La idea del optimizer es muy buena, rocks.

    Enhorabuena por el código, está muy bien

    Zaelsius

                                    A ver si actualizan la portada de la web con el enlace al nuevo COTW... :ojo:                                

    ethernet

    si, tienes razon, dare un toque a luxito!! LUXITOO!!

    A ver si tengo un poco mas de tiempo para mirarme los fuentes y hacer criticas estupidas para provocar flames sin sentido ;PP

    ethernet

    Ya he mirado un poco el codigo, aunque muy por encima. Unas preguntas:

    Por que en los iterrators usas postincremento? normalmente se usa preincremento cuando se puede, es mas efectivo con iterators, no necesita hacer una copia temporal

    Por que no usas un interface para el code y el decode asi como
    struct ICodec
    {
    virtual void encode(..) = 0;
    virtual void decode(..) = 0;
    };
    en vez de pasar un puntero a funcion, q queda muy cutre (muy con sabor a c ;P)

    Por q no usas el hash<> de STL?

    Un saludo

    Zaelsius

                                    Te respondo:

    - Sobre los iteradores, no sabia que era más efectivo hacer el preincremento, aun no he leido todos los capítulos enteros sobre STL del C++ Programming Language del Stroustrup ;-)
     Pero ahora que lo pienso, tiene bastante sentido.

    - Lo de la interfaz, pues tambien tienes razón. Me lo anoto.
     Es que con las p.... de prácticas que nos mandan en la uni, tampoco se puede practicar demasiado diseño con C++...XD  Te cuentan cuatro cosas sobre herencia en C++ y tienen los huevos de llamarlo "Programación Orientada a Objetos", en fin...
     Menos mal que poco a poco por nuestra cuenta(y con la ayuda de los demás strateros) vamos aprendiendo...

    - Sobre el hash<>, en el libro que cito arriba no comenta nada(creo) sobre hash<>.  Aparecen los tipos map<> y hash_map<>, pero no he visto el que tu comentas.
    map<> creo que utiliza internamente árboles, y hash_map pues supongo que una tabla hash, no?                                

    ethernet

    Tira el libro ;PP
    stl tiene una clase llamada hash, almenos la stl de sgi q es la q yo uso (apostaria q STLport tb la tiene) es una clase q sirve para hash con std::string y char *, es la q uso yo para el hash q debes dar a hash_map. De todas maneras puedes usar el hash q te de la gana, seguro q es tan bueno como el q trae stl.

    umh, el sistema de codec y manejode datos q usa el unreal se sale. tiene una clase FArchive que tiene unos cuantos metodos, entre ellos serialize(void *,int) y con el maneja todos los datos, tanto de ficheros como de otros sitios. Con esto tiene una clase codec

    class codec
    {
    public: virtual void encode(FArchive &i,FArchive &o) = 0:
    }

    de esta manera le pasa un FArchive, que puede ser un fichero o simplemente datos en memoria y encodea.
    Esta clase tb la usa para hacer serialize de los objetos, pero esa parte no la he mirado demasiado, tiene unas macros q son indecifrables para mi

    un saludo :)






    Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
    Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
    Muchísimas gracias.