sv: rearrange sv_substr and sv_truncate
This commit is contained in:
@@ -29,8 +29,8 @@ typedef struct
|
|||||||
sv_t sv_copy(sv_t);
|
sv_t sv_copy(sv_t);
|
||||||
sv_t sv_chop_left(sv_t, u64 size);
|
sv_t sv_chop_left(sv_t, u64 size);
|
||||||
sv_t sv_chop_right(sv_t, u64 size);
|
sv_t sv_chop_right(sv_t, u64 size);
|
||||||
sv_t sv_substr(sv_t, u64 position, u64 size);
|
|
||||||
sv_t sv_truncate(sv_t, u64 newsize);
|
sv_t sv_truncate(sv_t, u64 newsize);
|
||||||
|
sv_t sv_substr(sv_t, u64 position, u64 size);
|
||||||
|
|
||||||
sv_t sv_till(sv_t, const char *reject);
|
sv_t sv_till(sv_t, const char *reject);
|
||||||
sv_t sv_while(sv_t, const char *accept);
|
sv_t sv_while(sv_t, const char *accept);
|
||||||
|
|||||||
15
src/sv.c
15
src/sv.c
@@ -36,18 +36,19 @@ sv_t sv_chop_right(sv_t sv, u64 size)
|
|||||||
return SV(sv.data, sv.size - size);
|
return SV(sv.data, sv.size - size);
|
||||||
}
|
}
|
||||||
|
|
||||||
sv_t sv_substr(sv_t sv, u64 position, u64 size)
|
|
||||||
{
|
|
||||||
return sv_truncate(sv_chop_left(sv, position), size);
|
|
||||||
}
|
|
||||||
|
|
||||||
sv_t sv_truncate(sv_t sv, u64 newsize)
|
sv_t sv_truncate(sv_t sv, u64 newsize)
|
||||||
{
|
{
|
||||||
if (newsize >= sv.size)
|
if (newsize > sv.size)
|
||||||
return sv;
|
return SV(NULL, 0);
|
||||||
return SV(sv.data, newsize);
|
return SV(sv.data, newsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sv_t sv_substr(sv_t sv, u64 position, u64 size)
|
||||||
|
{
|
||||||
|
sv_t result = sv_truncate(sv_chop_left(sv, position), size);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
sv_t sv_till(sv_t sv, const char *reject)
|
sv_t sv_till(sv_t sv, const char *reject)
|
||||||
{
|
{
|
||||||
if (sv.size == 0 || !sv.data)
|
if (sv.size == 0 || !sv.data)
|
||||||
|
|||||||
Reference in New Issue
Block a user