+ pop(zl,ZIPLIST_TAIL);
+ ziplistRepr(zl);
+
+ printf("Get element at index 3:\n");
+ {
+ zl = createList();
+ p = ziplistIndex(zl, 3);
+ if (!ziplistGet(p, &entry, &elen, &value)) {
+ printf("ERROR: Could not access index 3\n");
+ return 1;
+ }
+ if (entry) {
+ fwrite(entry,elen,1,stdout);
+ printf("\n");
+ } else {
+ printf("%lld\n", value);
+ }
+ printf("\n");
+ }
+
+ printf("Get element at index 4 (out of range):\n");
+ {
+ zl = createList();
+ p = ziplistIndex(zl, 4);
+ if (p == NULL) {
+ printf("No entry\n");
+ } else {
+ printf("ERROR: Out of range index should return NULL, returned offset: %ld\n", p-zl);
+ return 1;
+ }
+ printf("\n");
+ }
+
+ printf("Get element at index -1 (last element):\n");
+ {
+ zl = createList();
+ p = ziplistIndex(zl, -1);
+ if (!ziplistGet(p, &entry, &elen, &value)) {
+ printf("ERROR: Could not access index -1\n");
+ return 1;
+ }
+ if (entry) {
+ fwrite(entry,elen,1,stdout);
+ printf("\n");
+ } else {
+ printf("%lld\n", value);
+ }
+ printf("\n");
+ }
+
+ printf("Get element at index -4 (first element):\n");
+ {
+ zl = createList();
+ p = ziplistIndex(zl, -4);
+ if (!ziplistGet(p, &entry, &elen, &value)) {
+ printf("ERROR: Could not access index -4\n");
+ return 1;
+ }
+ if (entry) {
+ fwrite(entry,elen,1,stdout);
+ printf("\n");
+ } else {
+ printf("%lld\n", value);
+ }
+ printf("\n");
+ }
+
+ printf("Get element at index -5 (reverse out of range):\n");
+ {
+ zl = createList();
+ p = ziplistIndex(zl, -5);
+ if (p == NULL) {
+ printf("No entry\n");
+ } else {
+ printf("ERROR: Out of range index should return NULL, returned offset: %ld\n", p-zl);
+ return 1;
+ }
+ printf("\n");
+ }
+