Serene Runtime
1.0.0
C runtime for the Serene programming language
Loading...
Searching...
No Matches
symbols.h
Go to the documentation of this file.
1
/* -*- C -*-
2
* Serene programming language
3
* Copyright (C) 2019-2026 Sameer Rahmani <
[email protected]
>
4
*
5
* This library is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU Lesser General Public License as published by
7
* the Free Software Foundation, either version 3 of the License, or
8
* (at your option) any later version.
9
*
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU Lesser General Public License for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public License
16
* along with this library. If not, see <https://www.gnu.org/licenses/>.
17
*/
18
#pragma once
19
20
#include "
serene/rt/core.h
"
21
#include "
serene/rt/engine.h
"
22
23
// Notes:
24
// - Symbols are usique per namespace.
25
// - NS/Symbol combinations are unique per engine
26
// - Symbol's address in memory are their identifier internally
27
typedef
struct
srn_string_t
srn_string_t
;
28
typedef
struct
srn_namespace_t
srn_namespace_t
;
29
30
typedef
struct
srn_symbol_t
{
31
srn_string_t
*
name
;
32
srn_namespace_t
*
ns
;
33
}
srn_symbol_t
;
34
35
/// Create a new symbol. IT DOES NOT INTERNALIZE THE SYMBOL.
36
[[gnu::nonnull(1, 3, 4)]]
37
srn_value_t
*
srn_symbol_make
(
srn_context_t
*ctx,
srn_metadata_t
*metadata,
38
srn_namespace_t
*ns,
srn_string_t
*name);
39
40
[[gnu::nonnull(1, 3)]]
41
srn_value_t
*
srn_symbol_intern
(
srn_context_t
*ctx,
srn_metadata_t
*metadata,
42
srn_namespace_t
*ns,
srn_string_t
*symbol_name);
43
44
[[gnu::nonnull(1, 3)]]
45
srn_value_t
*
srn_symbol_gen
(
srn_context_t
*ctx,
srn_metadata_t
*metadata,
46
srn_namespace_t
*ns,
srn_string_t
*optional_name);
core.h
engine.h
srn_context_t
Definition
context.h:47
srn_metadata_t
Definition
core.h:57
srn_namespace_t
Definition
namespaces.h:48
srn_string_t
Definition
strings.h:33
srn_symbol_t
Definition
symbols.h:30
srn_symbol_t::ns
srn_namespace_t * ns
Definition
symbols.h:32
srn_symbol_t::name
srn_string_t * name
Definition
symbols.h:31
srn_value_t
Definition
core.h:131
srn_symbol_make
srn_value_t * srn_symbol_make(srn_context_t *ctx, srn_metadata_t *metadata, srn_namespace_t *ns, srn_string_t *name)
Create a new symbol. IT DOES NOT INTERNALIZE THE SYMBOL.
Definition
symbols.c:29
srn_symbol_intern
srn_value_t * srn_symbol_intern(srn_context_t *ctx, srn_metadata_t *metadata, srn_namespace_t *ns, srn_string_t *symbol_name)
Definition
symbols.c:43
srn_symbol_gen
srn_value_t * srn_symbol_gen(srn_context_t *ctx, srn_metadata_t *metadata, srn_namespace_t *ns, srn_string_t *optional_name)
Definition
symbols.c:72
serene
rt
symbols.h
Serene Runtime is free software, licensed under the
GNU LGPL v3
License.