~ubuntu-branches/ubuntu/quantal/kyotocabinet/quantal

« back to all changes in this revision

Viewing changes to example/kclangcex.c

  • Committer: Package Import Robot
  • Author(s): Shawn Landden
  • Date: 2012-06-07 16:12:07 UTC
  • Revision ID: package-import@ubuntu.com-20120607161207-prbj5blqgzzfl8of
Tags: upstream-1.2.76
ImportĀ upstreamĀ versionĀ 1.2.76

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <kclangc.h>
 
2
 
 
3
/* call back function for an existing record */
 
4
const char* visitfull(const char* kbuf, size_t ksiz,
 
5
                      const char* vbuf, size_t vsiz, size_t *sp, void* opq) {
 
6
  fwrite(kbuf, 1, ksiz, stdout);
 
7
  printf(":");
 
8
  fwrite(vbuf, 1, vsiz, stdout);
 
9
  printf("\n");
 
10
  return KCVISNOP;
 
11
}
 
12
 
 
13
/* call back function for an empty record space */
 
14
const char* visitempty(const char* kbuf, size_t ksiz, size_t *sp, void* opq) {
 
15
  fwrite(kbuf, 1, ksiz, stdout);
 
16
  printf(" is missing\n");
 
17
  return KCVISNOP;
 
18
}
 
19
 
 
20
/* main routine */
 
21
int main(int argc, char** argv) {
 
22
  KCDB* db;
 
23
  KCCUR* cur;
 
24
  char *kbuf, *vbuf;
 
25
  size_t ksiz, vsiz;
 
26
  const char *cvbuf;
 
27
 
 
28
  /* create the database object */
 
29
  db = kcdbnew();
 
30
 
 
31
  /* open the database */
 
32
  if (!kcdbopen(db, "casket.kch", KCOWRITER | KCOCREATE)) {
 
33
    fprintf(stderr, "open error: %s\n", kcecodename(kcdbecode(db)));
 
34
  }
 
35
 
 
36
  /* store records */
 
37
  if (!kcdbset(db, "foo", 3, "hop", 3) ||
 
38
      !kcdbset(db, "bar", 3, "step", 4) ||
 
39
      !kcdbset(db, "baz", 3, "jump", 4)) {
 
40
    fprintf(stderr, "set error: %s\n", kcecodename(kcdbecode(db)));
 
41
  }
 
42
 
 
43
  /* retrieve a record */
 
44
  vbuf = kcdbget(db, "foo", 3, &vsiz);
 
45
  if (vbuf) {
 
46
    printf("%s\n", vbuf);
 
47
    kcfree(vbuf);
 
48
  } else {
 
49
    fprintf(stderr, "get error: %s\n", kcecodename(kcdbecode(db)));
 
50
  }
 
51
 
 
52
  /* traverse records */
 
53
  cur = kcdbcursor(db);
 
54
  kccurjump(cur);
 
55
  while ((kbuf = kccurget(cur, &ksiz, &cvbuf, &vsiz, 1)) != NULL) {
 
56
    printf("%s:%s\n", kbuf, cvbuf);
 
57
    kcfree(kbuf);
 
58
  }
 
59
  kccurdel(cur);
 
60
 
 
61
  /* retrieve a record with visitor */
 
62
  if (!kcdbaccept(db, "foo", 3, visitfull, visitempty, NULL, 0) ||
 
63
      !kcdbaccept(db, "dummy", 5, visitfull, visitempty, NULL, 0)) {
 
64
    fprintf(stderr, "accept error: %s\n", kcecodename(kcdbecode(db)));
 
65
  }
 
66
 
 
67
  /* traverse records with visitor */
 
68
  if (!kcdbiterate(db, visitfull, NULL, 0)) {
 
69
    fprintf(stderr, "iterate error: %s\n", kcecodename(kcdbecode(db)));
 
70
  }
 
71
 
 
72
  /* close the database */
 
73
  if (!kcdbclose(db)) {
 
74
    fprintf(stderr, "close error: %s\n", kcecodename(kcdbecode(db)));
 
75
  }
 
76
 
 
77
  /* delete the database object */
 
78
  kcdbdel(db);
 
79
 
 
80
  return 0;
 
81
}