X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fxmpp%2Fxmpp_xmacros.c;h=63c99edaba96809499ad178f457f630bf4b92f94;hb=d13759233eefc3f1d7141b1e10b685bd96c80da5;hp=3366cbcfc9cc5b64d17e2af63b45de637a028059;hpb=85a4d8d0b5af0edda2a0fa27c66457b775eb1209;p=citadel.git diff --git a/citadel/modules/xmpp/xmpp_xmacros.c b/citadel/modules/xmpp/xmpp_xmacros.c index 3366cbcfc..63c99edab 100644 --- a/citadel/modules/xmpp/xmpp_xmacros.c +++ b/citadel/modules/xmpp/xmpp_xmacros.c @@ -13,6 +13,13 @@ void *GetToken_piq(void) return NULL; } +void *GetToken_message(void) +{ + return &XMPP->Message; +} + +/// TODO +#define CALLBACK(NAME); #define STRPROP(STRUCTNAME, NAME) \ if (StrLength(pdata->NAME) > 0) \ @@ -23,6 +30,12 @@ void *GetToken_piq(void) XPut("\" ", 2); \ } +#define PAYLOAD(STRUCTNAME, NAME) \ + XPrint(#NAME, sizeof(#NAME) -1, \ + XCLOSED, \ + TYPE_BODYSTR, SKEY(pdata->NAME), \ + TYPE_ARGEND); + #define THENAMESPACE(STRUCTNAME, NAME) \ XPut(#NAME, sizeof(#NAME) - 1); \ XPut("=\"", 2); \ @@ -46,23 +59,51 @@ void *GetToken_piq(void) } \ } +#define SUBTOKEN(NAME, NS, STOKEN, STRUCT) \ + void serialize_##NAME##NS##STOKEN( \ + theSubToken_##NAME##NS##STOKEN *pdata, int Close) \ + { \ + XPUT("<"); \ + XPut(#NAME, sizeof(#NAME)); \ + XPUT(" "); \ + STRUCT ; \ + XPUT(">"); \ + if (Close) \ + { \ + XPut("", 1); \ + } \ + } + #include "token.def" #undef STRPROP +#undef PAYLOAD #undef TOKEN - +#undef SUBTOKEN #define STRPROP(STRUCTNAME, NAME) \ FreeStrBuf(&pdata->NAME); +#define PAYLOAD(STRUCTNAME, NAME) \ + FreeStrBuf(&pdata->NAME); + #define TOKEN(NAME, STRUCT) \ void free_buf_##NAME(TheToken_##NAME *pdata) \ { \ STRUCT ; \ } +#define SUBTOKEN(NAME, NS, STOKEN, STRUCT) void free_buf__##NAME##NS##STOKEN \ + (theSubToken_##NAME##NS##STOKEN *pdata){ \ + STRUCT ; \ + } + #include "token.def" #undef STRPROP +#undef PAYLOAD #undef TOKEN +#undef SUBTOKEN #define TOKEN(NAME, STRUCT) \ void free_##NAME(TheToken_##NAME *pdata) \ @@ -71,9 +112,17 @@ void *GetToken_piq(void) free(pdata); \ } +#define SUBTOKEN(NAME, NS, STOKEN, STRUCT) void free__##NAME##NS##STOKEN \ + (theSubToken_##NAME##NS##STOKEN *pdata) \ + { \ + free_buf__##NAME##NS##STOKEN(pdata); \ + free(pdata); \ + } + #include "token.def" #undef STRPROP #undef TOKEN +#undef SUBTOKEN @@ -90,7 +139,18 @@ CTDL_MODULE_INIT(xmpp_xmacros) #PROPERTYNAME, sizeof(#PROPERTYNAME)-1, \ GetToken_##TOKENNAME, \ offset##PROPERTYNAME); +#define PAYLOAD(TOKENNAME, PROPERTYNAME) \ + long offset##PROPERTYNAME = \ + offsetof(TheToken_##TOKENNAME, PROPERTYNAME); \ + XMPP_RegisterTokenProperty( \ + NAMESPACE_##TOKENNAME, \ + sizeof(NAMESPACE_##TOKENNAME)-1, \ + #TOKENNAME, sizeof(#TOKENNAME)-1, \ + NULL, 0, \ + GetToken_##TOKENNAME, \ + offset##PROPERTYNAME); #define TOKEN(NAME, STRUCT) STRUCT +#define SUBTOKEN(NAME, NS, STOKEN, STRUCT) STRUCT #include "token.def" #undef STRPROP #undef TOKEN