Nyx Node
Toggle main menu visibility
Loading...
Searching...
No Matches
json_number.c
1
/* NyxNode
2
* Author: Jérôme ODIER <jerome.odier@lpsc.in2p3.fr>
3
* SPDX-License-Identifier: GPL-2.0-only (Mongoose backend) or GPL-3.0+
4
*/
5
6
/*--------------------------------------------------------------------------------------------------------------------*/
7
8
#include "../nyx_node_internal.h"
9
10
/*--------------------------------------------------------------------------------------------------------------------*/
11
12
nyx_number_t
*
nyx_number_new
(
void
)
13
{
14
/*----------------------------------------------------------------------------------------------------------------*/
15
16
nyx_number_t
*
object
=
nyx_memory_alloc
(
sizeof
(
nyx_number_t
));
17
18
/*----------------------------------------------------------------------------------------------------------------*/
19
20
object
->base = NYX_OBJECT(
NYX_TYPE_NUMBER
);
21
22
/*----------------------------------------------------------------------------------------------------------------*/
23
24
object
->value = 0.0;
25
26
/*----------------------------------------------------------------------------------------------------------------*/
27
28
return
object;
29
}
30
31
/*--------------------------------------------------------------------------------------------------------------------*/
32
33
void
nyx_number_free(
nyx_number_t
*
object
)
34
{
35
nyx_memory_free
(
object
);
36
}
37
38
/*--------------------------------------------------------------------------------------------------------------------*/
39
40
double
nyx_number_get
(
const
nyx_number_t
*
object
)
41
{
42
return
object
->value;
43
}
44
45
/*--------------------------------------------------------------------------------------------------------------------*/
46
47
bool
nyx_number_set
(
nyx_number_t
*
object
,
double
value
)
48
{
49
bool
modified = \
50
object
->value !=
value
;
51
object
->value =
value
;
52
53
return
modified;
54
}
55
56
/*--------------------------------------------------------------------------------------------------------------------*/
57
58
str_t
nyx_number_to_string
(
const
nyx_number_t
*
object
)
59
{
60
str_t
result = nyx_double_dup(object->
value
);
61
62
if
(result == NULL)
63
{
64
result =
nyx_string_dup
(
"null"
);
65
}
66
67
return
result;
68
}
69
70
/*--------------------------------------------------------------------------------------------------------------------*/
nyx_memory_alloc
__NYX_NULLABLE__ buff_t nyx_memory_alloc(__NYX_ZEROABLE__ size_t size)
Similar to libc malloc except that a memory overflow causes the node to stop.
nyx_memory_free
__NYX_ZEROABLE__ size_t nyx_memory_free(__NYX_NULLABLE__ buff_t buff)
Similar to libc free except that it returns the amount of memory freed.
nyx_string_dup
__NYX_NULLABLE__ str_t nyx_string_dup(__NYX_NULLABLE__ STR_t s)
Similar to libc strdup.
str_t
#define str_t
Alias for char *.
Definition
nyx_node.h:70
nyx_number_t::value
double value
Number payload.
Definition
nyx_node.h:729
nyx_number_t::nyx_number_get
double nyx_number_get(const nyx_number_t *object)
Gets the value of the provided JSON number object.
Definition
json_number.c:40
nyx_number_t::nyx_number_to_string
str_t nyx_number_to_string(const nyx_number_t *object)
Returns a string representing the provided JSON number object.
Definition
json_number.c:58
nyx_number_t::nyx_number_new
nyx_number_t * nyx_number_new(void)
Allocates a new JSON number object.
Definition
json_number.c:12
nyx_number_t::nyx_number_set
bool nyx_number_set(nyx_number_t *object, double value)
Sets the value of the provided JSON number object.
Definition
json_number.c:47
nyx_number_t
Struct describing a JSON number object.
Definition
nyx_node.h:726
NYX_TYPE_NUMBER
@ NYX_TYPE_NUMBER
Number object.
Definition
nyx_node.h:436
Author:
Jérôme ODIER
License:
LGPL-3.0-or-later
Copyright:
LPSC / CNRS