[MODULE] GMXEXT_mod_xml

Extensiones oficiales y no para expander el lenguaje Gemix.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by CicTec »

Esta mal, antes que asignabas al parametro puntero ? o sea el parametro XMLElement *e como le asignabas un valor internamente en la funcion ?
brujoMX
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by brujoMX »

Antes era asi, cuando tenias que pasar como referencia un XMLElement desde Gemix.

Code: Select all

MXvoid GMXEXT_XmlGetRootElement() {
	SDK_XMLElement *dst = (SDK_XMLElement *)GMXAPI_GetIntPtrParam();
	SDK_GetDocument();

	if (doc != NULL) {
		XMLElement *src = doc->RootElement();
		if (src != NULL) {
			SDK_FillElement(XMLDocumentID, dst, src);
			GMXAPI_RetIntValue(SDK_RET_SUCCESS);
		}
	}

	GMXAPI_RetIntValue(SDK_RET_ERROR);
}
pero ahora pues ya no seria que lo pase desde Gemix si no que la funcion se lo mande a gemix

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);
}
En que estoy mal?
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by CicTec »

Vale tienes que cambiar eso:
[Codebox=gemix file=Untitled.gemix]
GMXAPI_RetIntValue((GMXint)root); // asi stransformo el valor del puntero en un INT y lo devuelvo
}
}

GMXAPI_RetIntValue(0); // devuelvo 0 para que el puntero que recibe el valor sea NULL
[/Codebox]
En el medio falta que te crees un pool (lista enlanzada o lo que sea) que guarde la lista de los "root" alocados, cuando la lib acaba, el entrypoint "release" debe recorrer la lista y hacer un free para liberar la memoria.
brujoMX
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by brujoMX »

Gracias, si eso voy a hacer lo de la pool y al finalizar liberar todo,
disculpa pero tengo otra duda, como comparo contra NULL un puntero que viene desde Gemix a mi dll
por ejemplo:

Code: Select all

SDK_XMLElement *GemixElement = (SDK_XMLElement *)GMXAPI_GetStructPtrParam();			
	if (GemixElement == NULL)															
		GMXAPI_RetIntValue(SDK_RET_ERROR);	
en ese fragmento de codigo SIEMPRE entra al if por lo tanto la funcion termina, mas no se por que razon, si GemixElement no es nulo, pues lo estoy siguiendo con el depurador de visual studio y si tiene datos y todo.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by CicTec »

De nada.

Mmmmm, si tienes un valor distinto de 0 no deberia entrar en el if, prueba a ponerle "== 0", pero es raro.
brujoMX
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by brujoMX »

Mira a eso me refiero, que estare haciendo mal ?

Image
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by CicTec »

Nada por lo que veo, y te entra siempre en el if acabando la funcion ?
brujoMX
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by brujoMX »

si, siempre siempre, si yo comento el if entonces la funcion continua y hace su trabajo sin problemas, pero si dejo el if entonces siempre me dice que es NULL
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by CicTec »

Ah vale, porque te faltan las { } en el if, pon:
[Codebox=gemix file=Untitled.gemix]
if (GemixElement == NULL) {
GMXAPI_RetIntValue(SDK_RET_ERROR);
}
[/Codebox]
Porque la macro de Gemix tiene 2 istrucciones, una llamada al RetValue y un return, si no pones las { }, el if ejecutara solo el RetInt value y el return queda fuera dal IF, ejecutandose siempre y acabando asi la funcion.
brujoMX
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Post by brujoMX »

ah si ya vi que esa macro tiene un return al final xD

gracias CicTec
Post Reply

Return to “Extensiones Gemix”