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_chop_left(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_substr(sv_t, u64 position, u64 size);
|
||||
|
||||
sv_t sv_till(sv_t, const char *reject);
|
||||
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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (newsize >= sv.size)
|
||||
return sv;
|
||||
if (newsize > sv.size)
|
||||
return SV(NULL, 0);
|
||||
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)
|
||||
{
|
||||
if (sv.size == 0 || !sv.data)
|
||||
|
||||
Reference in New Issue
Block a user