Prism Ruby parser
Loading...
Searching...
No Matches
stringy.h
Go to the documentation of this file.
1
6#ifndef PRISM_STRINGY_H
7#define PRISM_STRINGY_H
8
9#include "prism/compiler/exported.h"
10#include "prism/compiler/nonnull.h"
11
12#include <stddef.h>
13#include <stdint.h>
14
18typedef struct {
20 const uint8_t *source;
21
23 size_t length;
24
26 enum {
29
32
34 PM_STRING_OWNED
35 } type;
37
45PRISM_EXPORTED_FUNCTION void pm_string_constant_init(pm_string_t *string, const char *source, size_t length) PRISM_NONNULL(1);
46
54PRISM_EXPORTED_FUNCTION void pm_string_owned_init(pm_string_t *string, uint8_t *source, size_t length) PRISM_NONNULL(1, 2);
55
62PRISM_EXPORTED_FUNCTION size_t pm_string_length(const pm_string_t *string) PRISM_NONNULL(1);
63
70PRISM_EXPORTED_FUNCTION const uint8_t * pm_string_source(const pm_string_t *string) PRISM_NONNULL(1);
71
72#endif
PRISM_EXPORTED_FUNCTION void pm_string_constant_init(pm_string_t *string, const char *source, size_t length) PRISM_NONNULL(1)
Initialize a constant string that doesn't own its memory source.
PRISM_EXPORTED_FUNCTION void PRISM_EXPORTED_FUNCTION size_t pm_string_length(const pm_string_t *string) PRISM_NONNULL(1)
Returns the length associated with the string.
PRISM_EXPORTED_FUNCTION void pm_string_owned_init(pm_string_t *string, uint8_t *source, size_t length) PRISM_NONNULL(1
Initialize an owned string that is responsible for freeing allocated memory.
PRISM_EXPORTED_FUNCTION const uint8_t * pm_string_source(const pm_string_t *string) PRISM_NONNULL(1)
Returns the start pointer associated with the string.
A generic string type that can have various ownership semantics.
Definition stringy.h:18
const uint8_t * source
A pointer to the start of the string.
Definition stringy.h:20
size_t length
The length of the string in bytes of memory.
Definition stringy.h:23
@ PM_STRING_CONSTANT
This string is a constant string, and should not be freed.
Definition stringy.h:28
@ PM_STRING_SHARED
This is a slice of another string, and should not be freed.
Definition stringy.h:31