[MODULE] GMXEXT_mod_xml

Extensiones oficiales y no para expander el lenguaje Gemix.

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Tue Aug 27, 2013 9:34 pm

Esta mal, antes que asignabas al parametro puntero ? o sea el parametro XMLElement *e como le asignabas un valor internamente en la funcion ?
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 9:44 pm

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?
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Tue Aug 27, 2013 9:50 pm

Vale tienes que cambiar eso:
Source Code (Gemix) [ Download ] [ Hide ]
  •          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
  •  

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 10:10 pm

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.
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Tue Aug 27, 2013 10:17 pm

De nada.

Mmmmm, si tienes un valor distinto de 0 no deberia entrar en el if, prueba a ponerle "== 0", pero es raro.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 10:26 pm

Mira a eso me refiero, que estare haciendo mal ?

Image
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Tue Aug 27, 2013 10:35 pm

Nada por lo que veo, y te entra siempre en el if acabando la funcion ?
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 10:43 pm

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
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby CicTec » Tue Aug 27, 2013 10:49 pm

Ah vale, porque te faltan las { } en el if, pon:
Source Code (Gemix) [ Download ] [ Hide ]
  •    if (GemixElement == NULL)  {                                          
  •       GMXAPI_RetIntValue(SDK_RET_ERROR);
  •    }
  •  

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: [MODULE] GMXEXT_mod_xml beta

Postby brujoMX » Tue Aug 27, 2013 10:55 pm

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

gracias CicTec
brujoMX
 
Posts: 321
Joined: Thu Jan 12, 2012 9:10 pm

PreviousNext

Return to Extensiones Gemix

Who is online

Users browsing this forum: No registered users and 2 guests