syslog-ng source
generic-number.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 Balazs Scheidler <bazsi77@gmail.com>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * As an additional exemption you are allowed to compile & link against the
19  * OpenSSL libraries as published by the OpenSSL project. See the file
20  * COPYING for details.
21  */
22 
23 #ifndef SYSLOG_NG_GENERIC_NUMBER_H_INCLUDED
24 #define SYSLOG_NG_GENERIC_NUMBER_H_INCLUDED
25 
26 #include "syslog-ng.h"
27 
28 typedef struct _GenericNumber
29 {
30  enum
31  {
35  } type;
36  gint precision;
37  union
38  {
39  gint64 raw_int64;
40  gdouble raw_double;
41  } value;
43 
44 void gn_set_double(GenericNumber *number, double value, gint precision);
45 gdouble gn_as_double(const GenericNumber *number);
46 void gn_set_int64(GenericNumber *number, gint64 value);
47 gint64 gn_as_int64(const GenericNumber *number);
48 gboolean gn_is_zero(const GenericNumber *number);
49 void gn_set_nan(GenericNumber *number);
50 gboolean gn_is_nan(const GenericNumber *number);
51 gint gn_compare(const GenericNumber *left, const GenericNumber *right);
52 
53 #endif
gint64 gn_as_int64(const GenericNumber *number)
Definition: generic-number.c:44
gboolean gn_is_zero(const GenericNumber *number)
Definition: generic-number.c:70
void gn_set_nan(GenericNumber *number)
Definition: generic-number.c:82
gint gn_compare(const GenericNumber *left, const GenericNumber *right)
Definition: generic-number.c:116
gdouble gn_as_double(const GenericNumber *number)
Definition: generic-number.c:26
gboolean gn_is_nan(const GenericNumber *number)
Definition: generic-number.c:88
void gn_set_int64(GenericNumber *number, gint64 value)
Definition: generic-number.c:62
void gn_set_double(GenericNumber *number, double value, gint precision)
Definition: generic-number.h:29
@ GN_NAN
Definition: generic-number.h:34
@ GN_DOUBLE
Definition: generic-number.h:33
@ GN_INT64
Definition: generic-number.h:32
gdouble raw_double
Definition: generic-number.h:40
gint precision
Definition: generic-number.h:36
gint64 raw_int64
Definition: generic-number.h:39
GString * value
Definition: test_decode.c:28