summaryrefslogtreecommitdiffstats
path: root/bytecode/slice.c
blob: 0739a4a91453f8ea1bd3331e0410a3c951cb185c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <assert.h>

#include "slice.h"

struct slice slice(struct slice a, size_t i, size_t j)
{
	assert(i <= a.size && j <= a.size && i <= j);
	return (struct slice) { .size = j - i, .buf = a.buf + i };
}

struct slice slice1(struct slice a, size_t i)
{
	return slice(a, i, a.size);
}

struct val_slice val_slice(struct val_slice a, size_t i, size_t j)
{
	assert(i <= a.size && j <= a.size && i <= j);
	return (struct val_slice) { .size = j - i, .buf = a.buf + i };
}

struct val_slice val_slice1(struct val_slice a, size_t i)
{
	return val_slice(a, i, a.size);
}