si ya lo tengo todo eso montado, aceptan como primer parametro al ID del fichero cargado, solo que estaba usando ya la STL xD
lo voy a cambiar, gracias CicTec
[MODULE] GMXEXT_mod_xml
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: [MODULE] GMXEXT_mod_xml beta
Bien, de nada. 
- erkosone
- Posts: 10657
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [MODULE] GMXEXT_mod_xml beta
Sabes lo que estaría super genial? ya que tienes este modulo que aporta casi lo que hace falta para la codificación json..
Si montases unas funciones extra o incluso en un modulo por separado.. para accesar a la información de una trama json sería la leche brujo.
osea, un constructor de un nuevo objeto json en memoria, e ir añadiendo secuencialmente nombres de campos y valores, y por supuesto un decodificador como los clásicos: getElementByName(), sería la repera tener esto.
Disculpa por el offtopic de tu modulo, pero no he podido contenerme , tenía que comentartelo jeje.
Por cierto, gracias por compartir
Si montases unas funciones extra o incluso en un modulo por separado.. para accesar a la información de una trama json sería la leche brujo.
osea, un constructor de un nuevo objeto json en memoria, e ir añadiendo secuencialmente nombres de campos y valores, y por supuesto un decodificador como los clásicos: getElementByName(), sería la repera tener esto.
Disculpa por el offtopic de tu modulo, pero no he podido contenerme , tenía que comentartelo jeje.
Por cierto, gracias por compartir
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
-
brujoMX
- Posts: 321
- Joined: Thu Jan 12, 2012 9:10 pm
Re: [MODULE] GMXEXT_mod_xml beta
Hola, gracias por la sugerencia, pero le traigo ganas a un modulo con sqlite a ver que tan factible es.
Bueno pero les dejo una nueva beta con monton de funciones, el problema de los nombres repetidos ya solucionado, y la carga de N numero de documentos xml, ojala lo puedan probar pues la vdd no me da tiempo para crear el modulo y testearlo bien, esta actualizado el tema principal con la nueva beta.
Bueno pero les dejo una nueva beta con monton de funciones, el problema de los nombres repetidos ya solucionado, y la carga de N numero de documentos xml, ojala lo puedan probar pues la vdd no me da tiempo para crear el modulo y testearlo bien, esta actualizado el tema principal con la nueva beta.
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: [MODULE] GMXEXT_mod_xml beta
Hola brujoMX,
Estoy probando el modulo, te pongo mi opinion y sugerencia sobre algunos puntos:
- La funcion XML_GetElement:
INT XML_GetElement(INT document, XMLElement *e, STRING path)
Actualmente la usas asi:
[Codebox=gemix file=Untitled.gemix]
XML_GetElement(document, &eResolution, "NoName.desktop");
XML_GetElement(document, &eActor, "NoName.actor");
[/Codebox]
Seria mas "comoda" y intuitiva si fuera asi:
XMLElement *XML_GetElement(INT document, STRING path)
Para poderla usar asi:
[Codebox=gemix file=Untitled.gemix]
eResolution = XML_GetElement(document, "NoName.desktop");
eActor = XML_GetElement(document, "NoName.actor");
[/Codebox]
- La funcion XML_DeleteSon:
INT XML_DeleteSon(XMLElement *e, STRING son_name)
INT XML_DeleteSon(XMLElement *e, INT flag) -> (overload 1)
Si flag vale XML_ALL_ELEMENTS se eliminan todos los hijos del element e.
Si flag no vale XML_ALL_ELEMENTS que pasaria ?
Creo que una mejor API seria asi:
INT XML_DeleteSon(XMLElement *e)
INT XML_DeleteSon(XMLElement *e, STRING son_name) -> (overload 1)
Y tener esas posibilidades de codigo:
[Codebox=gemix file=Untitled.gemix]
xml_deleteson(eResolution); // elimino todos los hijos del elemento "eResolution"
xml_deleteson(eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution"
xml_deleteson(xml_all_element); // elimino todos los hijos de todos los elementos -> problema, lo hace solo para un documiento, cual ?
xml_deleteson(xml_all_element, "blabla"); // elimino el hijo "blabla" de todos los elementos -> problema, lo hace solo para un documiento, cual ?
[/Codebox]
Como se vee, el ejemplo esta bien sino fuera que si usamos XML_ALL_ELEMENT, solo afecta a un documento, pero cual ?, quizas estaria bien que las funcion XML_DeleteSon tenga otro parametro (INT document) que identifique el documento.
- XML_unload:
Falta la referencia en el TXT.
- Plataformas:
Actualmente el modulo esta disponible solo para windows, tienes pensado porting a Linux y Mac ?
Por ahora es todo.
Estoy probando el modulo, te pongo mi opinion y sugerencia sobre algunos puntos:
- La funcion XML_GetElement:
INT XML_GetElement(INT document, XMLElement *e, STRING path)
Actualmente la usas asi:
[Codebox=gemix file=Untitled.gemix]
XML_GetElement(document, &eResolution, "NoName.desktop");
XML_GetElement(document, &eActor, "NoName.actor");
[/Codebox]
Seria mas "comoda" y intuitiva si fuera asi:
XMLElement *XML_GetElement(INT document, STRING path)
Para poderla usar asi:
[Codebox=gemix file=Untitled.gemix]
eResolution = XML_GetElement(document, "NoName.desktop");
eActor = XML_GetElement(document, "NoName.actor");
[/Codebox]
- La funcion XML_DeleteSon:
INT XML_DeleteSon(XMLElement *e, STRING son_name)
INT XML_DeleteSon(XMLElement *e, INT flag) -> (overload 1)
Si flag vale XML_ALL_ELEMENTS se eliminan todos los hijos del element e.
Si flag no vale XML_ALL_ELEMENTS que pasaria ?
Creo que una mejor API seria asi:
INT XML_DeleteSon(XMLElement *e)
INT XML_DeleteSon(XMLElement *e, STRING son_name) -> (overload 1)
Y tener esas posibilidades de codigo:
[Codebox=gemix file=Untitled.gemix]
xml_deleteson(eResolution); // elimino todos los hijos del elemento "eResolution"
xml_deleteson(eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution"
xml_deleteson(xml_all_element); // elimino todos los hijos de todos los elementos -> problema, lo hace solo para un documiento, cual ?
xml_deleteson(xml_all_element, "blabla"); // elimino el hijo "blabla" de todos los elementos -> problema, lo hace solo para un documiento, cual ?
[/Codebox]
Como se vee, el ejemplo esta bien sino fuera que si usamos XML_ALL_ELEMENT, solo afecta a un documento, pero cual ?, quizas estaria bien que las funcion XML_DeleteSon tenga otro parametro (INT document) que identifique el documento.
- XML_unload:
Falta la referencia en el TXT.
- Plataformas:
Actualmente el modulo esta disponible solo para windows, tienes pensado porting a Linux y Mac ?
Por ahora es todo.
-
brujoMX
- Posts: 321
- Joined: Thu Jan 12, 2012 9:10 pm
Re: [MODULE] GMXEXT_mod_xml beta
Gracias CicTec voy a hacerlo como me sugieron sobres los Get,
el
XML_DeleteSon(), borra todos los hijos del elemento que se le pase como parametro, del documento al cual pertenece ese elemento, cada XMLElement tiene un ID que le dice a que documento pertenece, por eso no es necesario pasarlo como parametro, pero si tu lo crees necesario asi lo hago.
voy a modicar esas cosas y agregar 2 funciones mas y subirlo, sobre el porting, si, tengo pensado portarlo a linux y mac.
Gracias por las sugerencias =)
el
XML_DeleteSon(), borra todos los hijos del elemento que se le pase como parametro, del documento al cual pertenece ese elemento, cada XMLElement tiene un ID que le dice a que documento pertenece, por eso no es necesario pasarlo como parametro, pero si tu lo crees necesario asi lo hago.
voy a modicar esas cosas y agregar 2 funciones mas y subirlo, sobre el porting, si, tengo pensado portarlo a linux y mac.
Gracias por las sugerencias =)
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: [MODULE] GMXEXT_mod_xml beta
De nada. 
Pues si ya el elemento tiene el ID del documento al cual pertenece ok, el problema es que si le pasa XML_ALL_ELEMENTS no se sabe a cual documento eliminar todos los elementos, por eso se necesita el parametro "document", sino debes eliminar la opcion XML_ALL_ELEMENTS
Yo haria asi:
INT XML_DeleteSon(INT document, XMLElement *e)
INT XML_DeleteSon(INT document, XMLElement *e, STRING son_name) -> (overload 1)
Con este uso:
[Codebox=gemix file=Untitled.gemix]
xml_deleteson(document, eResolution); // elimino todos los hijos del elemento "eResolution" del documento "document"
xml_deleteson(document, eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution" del documento "document"
xml_deleteson(document, XML_ALL_ELEMENTS); // elimino todos los elementos y hijos del documento "document"
xml_deleteson(document, XML_ALL_ELEMENTS, "blabla"); // elimino todos los hijos "blabla" de todos los elementos del documento "document"
[/Codebox]
Por cierto, para poder pasar XML_ALL_ELEMENTS al parametro "XMLElement *e", esta debe tener el valor 0, sino el compilador dara error en la llamada, mientra como 0 seria interpretado como si se pasase "null" o un puntero nulo y internamente lo puedes tratar como caso especial.
Pues si ya el elemento tiene el ID del documento al cual pertenece ok, el problema es que si le pasa XML_ALL_ELEMENTS no se sabe a cual documento eliminar todos los elementos, por eso se necesita el parametro "document", sino debes eliminar la opcion XML_ALL_ELEMENTS
Yo haria asi:
INT XML_DeleteSon(INT document, XMLElement *e)
INT XML_DeleteSon(INT document, XMLElement *e, STRING son_name) -> (overload 1)
Con este uso:
[Codebox=gemix file=Untitled.gemix]
xml_deleteson(document, eResolution); // elimino todos los hijos del elemento "eResolution" del documento "document"
xml_deleteson(document, eResolution, "blabla"); // elimino el hijo "blabla" del elemento "eResolution" del documento "document"
xml_deleteson(document, XML_ALL_ELEMENTS); // elimino todos los elementos y hijos del documento "document"
xml_deleteson(document, XML_ALL_ELEMENTS, "blabla"); // elimino todos los hijos "blabla" de todos los elementos del documento "document"
[/Codebox]
Por cierto, para poder pasar XML_ALL_ELEMENTS al parametro "XMLElement *e", esta debe tener el valor 0, sino el compilador dara error en la llamada, mientra como 0 seria interpretado como si se pasase "null" o un puntero nulo y internamente lo puedes tratar como caso especial.
-
brujoMX
- Posts: 321
- Joined: Thu Jan 12, 2012 9:10 pm
Re: [MODULE] GMXEXT_mod_xml beta
Hola CicTec, necesito alguna segurencia
Si regreso un puntero a los elementos tendria que crear de forma dinamica el elemento dentro de la funcion, entonces pensaba hacer una especie de pool para al finalizar eliminar todos los elementos creados cn malloc, o tendia pensado hacer algo asi: XML_FreeElement(XMLElement *), y dejar al usuario que la liberara
tu que opinas?
Si regreso un puntero a los elementos tendria que crear de forma dinamica el elemento dentro de la funcion, entonces pensaba hacer una especie de pool para al finalizar eliminar todos los elementos creados cn malloc, o tendia pensado hacer algo asi: XML_FreeElement(XMLElement *), y dejar al usuario que la liberara
tu que opinas?
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: [MODULE] GMXEXT_mod_xml beta
No es buena idea, mejor que el sistema lo gestione la lib para evitar memory leaks y complicar el usuario.
Yo la dejaria tal como esta.
Cual es el problema en devolver con Get en lugar de pasarle un parametro puntero ?
Yo la dejaria tal como esta.
Cual es el problema en devolver con Get en lugar de pasarle un parametro puntero ?
-
brujoMX
- Posts: 321
- Joined: Thu Jan 12, 2012 9:10 pm
Re: [MODULE] GMXEXT_mod_xml beta
Code: Select all
GMXvoid GMXEXT_XmlGetRootElement() {
SDK_GetDocument();
SDK_XMLElement root; //// = (SDK_XMLElement *)malloc(sizeof(SDK_XMLElement));
if (doc != NULL) {
XMLElement *src = doc->RootElement();
if (src != NULL) {
SDK_FillElement(XMLDocumentID, &root, src);
GMXAPI_RetIntValue(int(&root));
}
}
GMXAPI_RetIntValue(SDK_RET_ERROR);
}