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
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
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
A ver si actualizan la portada de la web con el enlace al nuevo COTW... :ojo:
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
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
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?
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 :)