Nyx Node
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
12nyx_number_t *nyx_number_new(void)
13{
14 /*----------------------------------------------------------------------------------------------------------------*/
15
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
33void nyx_number_free(nyx_number_t *object)
34{
35 nyx_memory_free(object);
36}
37
38/*--------------------------------------------------------------------------------------------------------------------*/
39
40double nyx_number_get(const nyx_number_t *object)
41{
42 return object->value;
43}
44
45/*--------------------------------------------------------------------------------------------------------------------*/
46
47bool 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
58str_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_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_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_NULLABLE__ str_t nyx_string_dup(__NYX_NULLABLE__ STR_t s)
Similar to libc strdup.
#define str_t
Alias for char *.
Definition nyx_node.h:70
@ NYX_TYPE_NUMBER
Number object.
Definition nyx_node.h:424
Struct describing a JSON number object.
Definition nyx_node.h:688
double value
Number payload.
Definition nyx_node.h:691