gdbmobj.h
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:2k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. #ifndef gdbmobj_h
  2. #define gdbmobj_h
  3. /*
  4. ** Copyright 1998 - 1999 Double Precision, Inc.  See COPYING for
  5. ** distribution information.
  6. */
  7. static const char gdbmobj_h_rcsid[]="$Id: gdbmobj.h,v 1.6 1999/12/06 13:14:46 mrsam Exp $";
  8. #include "gdbm.h"
  9. #include <stdlib.h>
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. struct gdbmobj {
  14. GDBM_FILE dbf;
  15. int has_dbf;
  16. char *prev_key;
  17. size_t prev_key_len;
  18. } ;
  19. void gdbmobj_init(struct gdbmobj *);
  20. int gdbmobj_open(struct gdbmobj *, const char *, const char *);
  21. void gdbmobj_close(struct gdbmobj *);
  22. #define gdbmobj_isopen(p) (!!(p)->has_dbf)
  23. char *gdbmobj_fetch(struct gdbmobj *, const char *, size_t, size_t *, const char *);
  24. int gdbmobj_exists(struct gdbmobj *, const char *, size_t);
  25. int gdbmobj_delete(struct gdbmobj *, const char *, size_t);
  26. int gdbmobj_store(struct gdbmobj *, const char *, size_t, const char *,
  27. size_t, const char *);
  28. char *gdbmobj_firstkey(struct gdbmobj *, size_t *, char **, size_t *);
  29. char *gdbmobj_nextkey(struct gdbmobj *, size_t *, char **, size_t *);
  30. #ifdef __cplusplus
  31. } ;
  32. class GdbmObj {
  33. struct gdbmobj obj;
  34. GdbmObj(const GdbmObj &); // Undefined
  35. GdbmObj &operator=(const GdbmObj &); // Undefined
  36. public:
  37. GdbmObj() { gdbmobj_init(&obj); }
  38. ~GdbmObj() { gdbmobj_close(&obj); }
  39. int Open(const char *filename, const char *mode)
  40. {
  41. return ( gdbmobj_open(&obj, filename, mode));
  42. }
  43. int IsOpen() { return (gdbmobj_isopen(&obj)); }
  44. void Close() { gdbmobj_close(&obj); }
  45. char *Fetch(const char *key, size_t keylen,
  46. size_t &valuelen, const char *mode)
  47. {
  48. return (gdbmobj_fetch(&obj, key, keylen,
  49. &valuelen, mode));
  50. }
  51. int Exists(const char *key, size_t keylen)
  52. {
  53. return (gdbmobj_exists(&obj, key, keylen));
  54. }
  55. int Delete(const char *key, size_t keylen)
  56. {
  57. return (gdbmobj_delete(&obj, key, keylen));
  58. }
  59. int Store(const char *key, size_t keylen,
  60. const char *value, size_t valuelen,
  61. const char *mode)
  62. {
  63. return (gdbmobj_store(&obj, key, keylen, value,
  64. valuelen, mode));
  65. }
  66. char *FetchFirstKeyVal(size_t &keylen, char *&val, size_t &vallen)
  67. {
  68. return (gdbmobj_firstkey(&obj, &keylen, &val, &vallen));
  69. }
  70. char *FetchNextKeyVal(size_t &keylen, char *&val, size_t &vallen)
  71. {
  72. return (gdbmobj_nextkey(&obj, &keylen, &val, &vallen));
  73. }
  74. } ;
  75. #endif
  76. #endif