Solo ando explorando un poco, y ni siquiera estoy seguro que no sea la primera vez que pongo un mensajillo con este tema...A ver quien da su punto de vista...Cualquier comentario se agradece
Se busca alguna solución a la persistencia de objetos en C++ que sea:
- reutilizable,
- freeware o de libre distribución
- trivial de usar al estilo Java (a lo sumo 1 o 2 clases, no más)
- que no me suponga problemas con los punteros -nunca fuí muy bueno con las indirecciones.
- que soporte copia simple de objetos referenciados por más de un objeto,
- que sea el código sea cross-plataforma,
- y el resultado también sea cross-plataforma, o sea, cuando yo salve algo en Windows
y lo abra en Mac OS X (o viceversa) no se vuelva loco con los tamaños de los tipos primitivos
- que permita tanto binario como XML
- que soporte atributos "transient" (ojo!, transient no es palabra reservada en C++ así que no hay forma humana de garantizar esto hasta donde puedo pensar)
- que no deje basura en memoria, ni sufra de "leakage" (odio de C++ que aún tenga yo que ser quien tenga que estar pendiente de la maldita memoria...cagonto que ya estamos en el siglo XXI!!),
- que no me obligue a romper el encapsulado de mis objetos
- fiable, que no me deje corromper mis objetos por culpa mia (y esto ya es decir!!)
- que permita leer instancias de objetos salvados en versiones anteriores de la clase
Opciones que he visto, y no me terminan de convencer:
- Eternity; quizás de lo mejorcito, pero no soporta copia simple de objetos
referenciados de forma múltiple...
- Calvin, soporta multiple referencia, pero a cambio no es cross-plataforma ni soporta XML
- DOL (Code Farm) No es sencilla y no es cross'plataforma, pero tiene algunas cosillas interesantes
- MFC CArchive; no es cross-plataforma y te obliga a derivar todas tus clases de CObject
- Xerces XML Parser; mastodóntico y complejo
- Este otro XML parser -> http://iridia.ulb.ac.be/~fvandenb/tools/xmlParser.html No soporta binario y no es capaz de validar los árboles XML, y ni te cuento de soporte a multiples referencias...
Otras opciones que me gustan aún menos:
- Crear mi propio par write/read en cada clase que cree. Posiblemente la peor idea de todas...Seguro que meto la pata y es de todo menos reutilizable...
- Crear mi propia libreria de persistencia. No
gracias...
...y no, no vale simplemente decir cambiate a tal otro lenguaje...