wtp_pdu.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:1k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /* wtp_pdu.h - definitions for unpacked WTP protocol data units
  2.  *
  3.  * This file generates a structure definition and some function
  4.  * declarations from wtp_pdu.def, using preprocessor magic.
  5.  *
  6.  * Richard Braakman
  7.  */
  8. #ifndef WTP_PDU_H
  9. #define WTP_PDU_H
  10. #include "gwlib/gwlib.h"
  11. struct wtp_tpi {
  12. int type;
  13. Octstr *data;
  14. };
  15. typedef struct wtp_tpi WTP_TPI;
  16. /* Enumerate the symbolic names of the PDUs */
  17. enum wtp_pdu_types {
  18. #define PDU(name, docstring, fields, is_valid) name,
  19. #include "wtp_pdu.def"
  20. #undef PDU
  21. };
  22. struct wtp_pdu {
  23. int type;
  24. List *options; /* List of WTP_TPI */
  25. union {
  26. /* For each PDU, declare a structure with its fields, named after the PDU */
  27. #define PDU(name, docstring, fields, is_valid) struct name { fields } name;
  28. #define UINT(field, docstring, bits) unsigned long field;
  29. #define UINTVAR(field, docstring) unsigned long field;
  30. #define OCTSTR(field, docstring, lengthfield) Octstr *field;
  31. #define REST(field, docstring) Octstr *field;
  32. #define TYPE(bits, value)
  33. #define RESERVED(bits)
  34. #define TPI(confield)
  35. #include "wtp_pdu.def"
  36. #undef TPI
  37. #undef RESERVED
  38. #undef TYPE
  39. #undef REST
  40. #undef OCTSTR
  41. #undef UINTVAR
  42. #undef UINT
  43. #undef PDU
  44. } u;
  45. };
  46. typedef struct wtp_pdu WTP_PDU;
  47. void wtp_pdu_append_tpi(WTP_PDU *pdu, int type, Octstr *data);
  48. WTP_PDU *wtp_pdu_create(int type);
  49. WTP_PDU *wtp_pdu_unpack(Octstr *data);
  50. Octstr *wtp_pdu_pack(WTP_PDU *pdu);
  51. void wtp_pdu_dump(WTP_PDU *pdu, int level);
  52. void wtp_pdu_destroy(WTP_PDU *pdu);
  53. void wtp_tpi_destroy(WTP_TPI *tpi);
  54. #endif