Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
033fb554
Commit
033fb554
authored
May 30, 2010
by
Pieter Noordhuis
Browse files
expose extra functionality from ziplist.c
parent
177a0a0b
Changes
2
Show whitespace changes
Inline
Side-by-side
ziplist.c
View file @
033fb554
...
@@ -432,6 +432,12 @@ unsigned char *ziplistNext(unsigned char *p) {
...
@@ -432,6 +432,12 @@ unsigned char *ziplistNext(unsigned char *p) {
return
(
p
[
0
]
==
ZIP_END
)
?
NULL
:
p
+
zipRawEntryLength
(
p
);
return
(
p
[
0
]
==
ZIP_END
)
?
NULL
:
p
+
zipRawEntryLength
(
p
);
}
}
/* Return pointer to previous entry in ziplist. */
unsigned
char
*
ziplistPrev
(
unsigned
char
*
p
)
{
zlentry
entry
=
zipEntry
(
p
);
return
(
entry
.
prevrawlen
==
0
)
?
NULL
:
p
-
entry
.
prevrawlen
;
}
/* Get entry pointer to by 'p' and store in either 'e' or 'v' depending
/* Get entry pointer to by 'p' and store in either 'e' or 'v' depending
* on the encoding of the entry. 'e' is always set to NULL to be able
* on the encoding of the entry. 'e' is always set to NULL to be able
* to find out whether the string pointer or the integer value was set.
* to find out whether the string pointer or the integer value was set.
...
@@ -455,10 +461,9 @@ unsigned int ziplistGet(unsigned char *p, char **sstr, unsigned int *slen, long
...
@@ -455,10 +461,9 @@ unsigned int ziplistGet(unsigned char *p, char **sstr, unsigned int *slen, long
return
1
;
return
1
;
}
}
/* Delete a range of entries from the ziplist. */
/* Insert an entry at "p". */
unsigned
char
*
ziplistDeleteRange
(
unsigned
char
*
zl
,
unsigned
int
index
,
unsigned
int
num
)
{
unsigned
char
*
ziplistInsert
(
unsigned
char
*
zl
,
unsigned
char
*
p
,
char
*
s
,
unsigned
int
slen
)
{
unsigned
char
*
p
=
ziplistIndex
(
zl
,
index
);
return
__ziplistInsert
(
zl
,
p
,
s
,
slen
);
return
p
==
NULL
?
zl
:
__ziplistDelete
(
zl
,
p
,
num
);
}
}
/* Delete a single entry from the ziplist, pointed to by *p.
/* Delete a single entry from the ziplist, pointed to by *p.
...
@@ -474,6 +479,12 @@ unsigned char *ziplistDelete(unsigned char *zl, unsigned char **p) {
...
@@ -474,6 +479,12 @@ unsigned char *ziplistDelete(unsigned char *zl, unsigned char **p) {
return
zl
;
return
zl
;
}
}
/* Delete a range of entries from the ziplist. */
unsigned
char
*
ziplistDeleteRange
(
unsigned
char
*
zl
,
unsigned
int
index
,
unsigned
int
num
)
{
unsigned
char
*
p
=
ziplistIndex
(
zl
,
index
);
return
(
p
==
NULL
)
?
zl
:
__ziplistDelete
(
zl
,
p
,
num
);
}
/* Compare entry pointer to by 'p' with 'entry'. Return 1 if equal. */
/* Compare entry pointer to by 'p' with 'entry'. Return 1 if equal. */
unsigned
int
ziplistCompare
(
unsigned
char
*
p
,
char
*
sstr
,
unsigned
int
slen
)
{
unsigned
int
ziplistCompare
(
unsigned
char
*
p
,
char
*
sstr
,
unsigned
int
slen
)
{
zlentry
entry
;
zlentry
entry
;
...
...
ziplist.h
View file @
033fb554
...
@@ -6,8 +6,10 @@ unsigned char *ziplistPush(unsigned char *zl, char *s, unsigned int slen, int wh
...
@@ -6,8 +6,10 @@ unsigned char *ziplistPush(unsigned char *zl, char *s, unsigned int slen, int wh
unsigned
char
*
ziplistPop
(
unsigned
char
*
zl
,
sds
*
target
,
int
where
);
unsigned
char
*
ziplistPop
(
unsigned
char
*
zl
,
sds
*
target
,
int
where
);
unsigned
char
*
ziplistIndex
(
unsigned
char
*
zl
,
int
index
);
unsigned
char
*
ziplistIndex
(
unsigned
char
*
zl
,
int
index
);
unsigned
char
*
ziplistNext
(
unsigned
char
*
p
);
unsigned
char
*
ziplistNext
(
unsigned
char
*
p
);
unsigned
char
*
ziplistPrev
(
unsigned
char
*
p
);
unsigned
int
ziplistGet
(
unsigned
char
*
p
,
char
**
sstr
,
unsigned
int
*
slen
,
long
long
*
sval
);
unsigned
int
ziplistGet
(
unsigned
char
*
p
,
char
**
sstr
,
unsigned
int
*
slen
,
long
long
*
sval
);
unsigned
char
*
ziplistDelete
(
unsigned
char
*
zl
,
unsigned
char
**
p
);
unsigned
char
*
ziplistDelete
(
unsigned
char
*
zl
,
unsigned
char
**
p
);
unsigned
char
*
ziplistInsert
(
unsigned
char
*
zl
,
unsigned
char
*
p
,
char
*
s
,
unsigned
int
slen
);
unsigned
char
*
ziplistDeleteRange
(
unsigned
char
*
zl
,
unsigned
int
index
,
unsigned
int
num
);
unsigned
char
*
ziplistDeleteRange
(
unsigned
char
*
zl
,
unsigned
int
index
,
unsigned
int
num
);
unsigned
int
ziplistCompare
(
unsigned
char
*
p
,
char
*
entry
,
unsigned
int
elen
);
unsigned
int
ziplistCompare
(
unsigned
char
*
p
,
char
*
entry
,
unsigned
int
elen
);
unsigned
int
ziplistLen
(
unsigned
char
*
zl
);
unsigned
int
ziplistLen
(
unsigned
char
*
zl
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment