2010-06-14 8 views
6

Busco a un IDL-como (o lo que sea) traductor que convierte una definición de documento DOM- o JSON-como en clases queAnalizador tipo IDL que convierte una definición de documento en clases potentes?

  • son accesibles desde ambos C++ y Python, dentro de la misma aplicación
  • exponer las propiedades del documento como Ints, flotadores, cuerdas, blob binario y compuestos: array, dict cadena (tanto encajable) (básicamente el conjunto de características de tipo JSON)
  • permitir cambios para ser rastreados para refrescar vistas de una interfaz de usuario de edición
  • proporcionan un historial de cambios para habilitar las operaciones de deshacer/rehacer
  • se puede serializar hacia y desde JSON (también puede ser algún tipo de formato binario)
  • permiten mantener grandes fragmentos de datos en el disco, con sólo piezas cargadas en la demanda
  • proporcionar sin bloqueo seguro para subprocesos de lectura/escritura acceso para intercambiar datos con hilos en tiempo real
  • permitir que varios editores en diferentes procesos (o incluso en diferentes máquinas) para ver y modificar el documento

lo que más se acerca hasta el momento es el sistema 2,5 de ADN/ARN Blender , pero no está disponible como una biblioteca separada y mal documentada.

Estoy tratando de asegurarme de que una lib todavía no exista, así que sé que mi tiempo no se pierde cuando empiezo a diseñar y escribir algo así. Se supone que proporciona una base excelente para escribir componentes de UI de edición.

+1

Información adicional, unos meses después de hacer esta pregunta: desarrollé mi propia solución para el problema subyacente a la pregunta anterior.Aquí está el resumen del proyecto: "Datenwerk es una biblioteca C autorizada por MIT para GNU/Linux y Windows con el objetivo de proporcionar una API de datos/modelo para aplicaciones que requieren un modelo/vista/patrón de controlador. Es el más adecuado para usar en música, 3D , gráficos vectoriales, escena, video y editores de juegos. Se incluyen enlaces para Python. ". El proyecto se encuentra en bitbucket.org/paniq/datenwerk – paniq

Respuesta

0

SWIG no cumple todos sus requisitos, pero sí hace que la interfaz C++ < -> python sea mucho más fácil.

+0

Estoy utilizando boost.python para la interfaz, sobre todo porque es el único contenedor que completa con éxito casi todo el código C++. SWIG necesita demasiado ajuste para estar cómodo. – paniq

+0

Ha pasado años la última vez que utilicé SWIG y eso fue con ruby. No estaba al tanto de boost.python. Neat – neoneye

1

ICE es el producto más parecido que pude pensar. No sé si puedes hacer una serialización en el disco con ICE, pero no puedo pensar en una razón por la que no. El problema es que cuesta $$$. No he negociado personalmente una licencia con ellos, pero ICE es el mayor jugador que conozco en este dominio.

Luego tiene Pyro para python que es Distributed Objects solamente.

objetos distribuidos en Objective-C (N/A para iPhone/iPad Dev, que aspira en mi humilde opinión)

Hay algunas bibliotecas de objetos C++ distribuido, pero la mayoría son muertos e inutilizable (CORBA viene a la mente).

Te puedo decir que habrá mucha demanda de este tipo de tecnología. He estado profundizando en algunas cuestiones de serialización y objetos remotos, ya que las soluciones estándar pueden ser muy costosas.

En cuanto a los marcos de código abierto para desarrollar internamente, recomiendo los hilos de boost :: asio para la lectura/escritura asincrónica sin hilos y la serialización :: serialización. No estoy muy bien leído en tecnología JSON, pero this parece una lectura interesante.

Ojalá hubiera algo libremente disponible para este pegamento de red/serialización del que podrían beneficiarse tantos proyectos.

+0

Todavía no he mirado de cerca a ICE, pero parece ser GPL, lo cual está bien para mí. Pyro es una buena idea, pero resuelve solo un problema. Gracias por las otras sugerencias. Ya estoy usando jsoncpp, eche un vistazo a boost.asio. – paniq

+0

Miré ICE, y parece que también es solo resolver el problema de red, que tiene la prioridad más baja en mi lista. – paniq

+0

Una pequeña excavación revela que ICE puede "congelar" objetos a una base de datos usando Desalojadores: http://www.zeroc.com/doc/Ice-3.4.1/manual/Freeze.40.3.html#142337 – manifest

Cuestiones relacionadas