blob: 6c3f47ab25e3f57c8826e223624f53a64505c6e4 (
plain)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#pragma once
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
struct string_view {
const char *s; // if NULL, len must be 0
size_t len;
};
struct string_view string_view(const char *s, size_t len);
bool sv_equals(const struct string_view s, const char *cmp);
bool sv_is_empty(const struct string_view s);
// If 's' is not NULL, writes a newly allocated copy to *output and returns
// true. Otherwise, stores NULL in *output and returns false.
bool sv_copy(const struct string_view s, char **output);
// If 's' is not NULL and fully parses as a decimal integer, writes that
// integer to *output and returns true. Otherwise, returns false.
bool sv_parse_i64(const struct string_view s, int64_t *output);
// Returns the word starting at the beginning of 'line', and modifies 'line' to
// point to the start of the next word. If there is no next word, sets line to
// NULL.
// If 'line' is empty or NULL, returns NULL.
struct string_view sv_tokenise_word(struct string_view *line);
// Skips all isspace() at the beginning of the string
void sv_skip_whitespace(struct string_view *line);
// Skips the given number of characters
void sv_skip(struct string_view *line, size_t num);
|