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

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  *
  3.  * wsbuffer.h
  4.  *
  5.  * Author: Markku Rossi <mtr@iki.fi>
  6.  *
  7.  * Copyright (c) 1999-2000 WAPIT OY LTD.
  8.  *  All rights reserved.
  9.  *
  10.  * A multipurpose buffer.
  11.  *
  12.  */
  13. #ifndef WSBUFFER_H
  14. #define WSBUFFER_H
  15. /********************* Types and defintions *****************************/
  16. /* A multipurpose buffer.  The contents of the buffer handle is
  17.    visible but its internals should not be modified directly. */
  18. struct WsBufferRec
  19. {
  20.     size_t len;
  21.     unsigned char *data;
  22. };
  23. typedef struct WsBufferRec WsBuffer;
  24. /********************* Global functions *********************************/
  25. /* Initialize the buffer `buffer'.  The buffer is not allocated; the
  26.    argument `buffer' must point to allocated buffer. */
  27. void ws_buffer_init(WsBuffer *buffer);
  28. /* Uninitialize buffer `buffer'.  The actual buffer structure is not
  29.    freed; only its internally allocated buffer is freed. */
  30. void ws_buffer_uninit(WsBuffer *buffer);
  31. /* Allocate and initialize a new buffer.  The function returns NULL if
  32.    the allocation failed. */
  33. WsBuffer *ws_buffer_alloc(void);
  34. /* Free the buffer `buffer' and all its resources. */
  35. void ws_buffer_free(WsBuffer *buffer);
  36. /* Append `size' bytes of data from `data' to the buffer `buffer'.
  37.    The function returns WS_TRUE if the operation was successful or
  38.    WS_FALSE otherwise. */
  39. WsBool ws_buffer_append(WsBuffer *buffer, unsigned char *data, size_t len);
  40. /* Append `size' bytes of space to the buffer `buffer'.  If the
  41.    argument `p' is not NULL, it is set to point to the beginning of
  42.    the appended space.  The function returns WS_TRUE if the operation
  43.    was successful of WS_FALSE otherwise.  */
  44. WsBool ws_buffer_append_space(WsBuffer *buffer, unsigned char **p, size_t size);
  45. /* Return a pointer to the beginning of the buffer's data. */
  46. unsigned char *ws_buffer_ptr(WsBuffer *buffer);
  47. /* Return the length of the buffer `buffer'. */
  48. size_t ws_buffer_len(WsBuffer *buffer);
  49. /* Steal the buffer's data.  The function returns a pointer to the
  50.    beginning of the buffer's data and re-initializes the buffer to
  51.    empty data.  The returned data must be with the ws_free() function
  52.    by the caller. */
  53. unsigned char *ws_buffer_steal(WsBuffer *buffer);
  54. #endif /* not WSBUFFER_H */