Serene Runtime
1.0.0
C runtime for the Serene programming language
Loading...
Searching...
No Matches
errors.c
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
19
#include "
serene/rt/errors.h
"
20
21
#include "
serene/rt/context.h
"
22
#include "
serene/utils.h
"
23
24
#ifdef SRN_WITH_SERENE
25
#include "
serene/rt/core.h
"
26
#endif
27
28
srn_error_t
*
srn_errors_make
(
const
srn_context_t
*ctx,
srn_error_tag_t
tag,
const
char
*msg) {
29
srn_error_t
*err =
ALLOC
(ctx,
srn_error_t
);
30
PANIC_IF_NULL
(err);
31
err->
tag
= tag;
32
err->
msg
= (
char
*)msg;
33
return
err;
34
}
35
36
#ifdef SRN_WITH_SERENE
37
srn_value_t
*srn_errors_make_error(
srn_context_t
*ctx,
srn_metadata_t
*metadata,
38
srn_error_tag_t
tag,
const
char
*msg) {
39
PANIC_IF_NULL
(metadata);
40
srn_error_t
*err =
srn_errors_make
(ctx, tag, msg);
41
return
srn_value_make
(ctx,
VError
, metadata, (
void
*)err);
42
}
43
44
srn_value_t
*srn_errors_err_to_value(
srn_context_t
*ctx,
srn_metadata_t
*metadata,
45
srn_error_t
*err) {
46
PANIC_IF_NULL
(err);
47
PANIC_IF_NULL
(ctx);
48
return
srn_value_make
(ctx,
VError
, metadata, (
void
*)err);
49
}
50
#endif
context.h
ALLOC
#define ALLOC(ctx, T)
Definition
context.h:82
srn_value_make
srn_value_t * srn_value_make(srn_context_t *ctx, srn_value_tag_t tag, srn_metadata_t *metadata, void *payload)
Creates a new serene value.
Definition
core.c:24
core.h
VError
@ VError
VError should be last.
Definition
core.h:128
srn_errors_make
srn_error_t * srn_errors_make(const srn_context_t *ctx, srn_error_tag_t tag, const char *msg)
Definition
errors.c:28
errors.h
srn_error_tag_t
srn_error_tag_t
Definition
errors.h:44
srn_context_t
Definition
context.h:47
srn_error_t
Definition
errors.h:55
srn_error_t::msg
char * msg
Definition
errors.h:57
srn_error_t::tag
srn_error_tag_t tag
Definition
errors.h:56
srn_metadata_t
Definition
core.h:57
srn_value_t
Definition
core.h:131
utils.h
PANIC_IF_NULL
#define PANIC_IF_NULL(ptr)
Definition
utils.h:64
rt
errors.c
Serene Runtime is free software, licensed under the
GNU LGPL v3
License.