1485c77a25707292195aeaeb192191b5136f242f
[citadel.git] / citadel / modules / xmpp / xmpp_util.h
1 typedef void* (*GetTokenDataFunc)(void);
2
3 typedef struct __TokenHandler {
4         HashList *Properties;
5         GetTokenDataFunc GetToken;
6 }TokenHandler;
7
8 typedef struct __PropertyHandler {
9         const char *NameSpace;
10         long NameSpaceLen;
11         const char *Token;
12         long TokenLen;
13         const char *Property;
14         long PropertyLen;
15         long offset;
16 } PropertyHandler;
17
18 void XUnbuffer(void);
19 void XPutBody(const char *Str, long Len);
20 void XPutProp(const char *Str, long Len);
21 #define XPutSProp(STR) XPutProp(ChrPtr(STR), StrLength(STR))
22 void XPut(const char *Str, long Len);
23 #define XPUT(CONSTSTR) XPut(CONSTSTR, sizeof(CONSTSTR) -1)
24
25 void XPrintf(const char *Format, ...);
26
27 #define XCLOSED (1<<0)
28 void XPrint(const char *Token, long tlen,
29             int Flags,
30             ...);
31
32 #define TYPE_STR 1
33 #define TYPE_OPTSTR 2
34 #define TYPE_INT 3
35 #define TYPE_BODYSTR 4
36 #define TYPE_ARGEND 5
37 #define XPROPERTY(NAME, VALUE, VLEN) TYPE_STR, NAME, sizeof(NAME)-1, VALUE, VLEN
38 #define XSPROPERTY(NAME, VALUE) TYPE_STR, NAME, sizeof(NAME)-1, ChrPtr(VALUE), StrLength(VALUE)
39 #define XOPROPERTY(NAME, VALUE, VLEN) TYPE_OPTSTR, NAME, sizeof(NAME)-1, VALUE, VLEN
40 #define XCPROPERTY(NAME, VALUE) TYPE_STR, NAME, sizeof(NAME)-1, VALUE, sizeof(VALUE) - 1
41 #define XIPROPERTY(NAME, LVALUE) TYPE_INT, NAME, SIZEOF(NAME)-1
42 #define XBODY(VALUE, VLEN) TYPE_BODYSTR, VALUE, VLEN
43 #define XCFGBODY(WHICH) TYPE_BODYSTR, config.WHICH, configlen.WHICH
44
45 void XMPP_RegisterTokenProperty(const char *NS, long NSLen,
46                                 const char *Token, long TLen,
47                                 const char *Property, long PLen,
48                                 GetTokenDataFunc GetToken,
49                                 long offset);