GRU - Generic Reusable Utilities
gru_config.h
Go to the documentation of this file.
1 /*
2  Copyright 2016 Otavio Rodolfo Piske
3 
4  Licensed under the Apache License, Version 2.0 (the "License");
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7 
8  http://www.apache.org/licenses/LICENSE-2.0
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15  */
16 
17 #ifndef GRU_CONFIG_H
18 #define GRU_CONFIG_H
19 
20 #include <stdarg.h>
21 #include <stdbool.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <string.h>
25 #if !defined(_WIN32) && !defined(_WIN64)
26 #include <pthread.h>
27 #endif
28 #include <assert.h>
29 #include <inttypes.h>
30 
31 #include "common/gru_alloc.h"
32 #include "common/gru_base.h"
33 #include "io/gru_ioutils.h"
34 #include "io/gru_path.h"
35 #include "string/gru_util.h"
36 
37 #include "gru_payload.h"
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 typedef struct gru_config_t_ {
44  char *dir;
45  char *filename;
46  FILE *file;
47 
50 
58 gru_export gru_config_t *gru_config_new(const char *dir, const char *filename, gru_status_t *status);
59 
64 
73 
75 
76 gru_export void gru_config_set(char *dest, uint32_t size, const char *fmt, ...);
77 
78 gru_export void gru_config_read_string(const char *name, FILE *source, char *dest);
79 gru_export void gru_config_read_short(const char *name, FILE *source, int16_t *dest);
80 gru_export void gru_config_read_ushort(const char *name, FILE *source, uint16_t *dest);
81 gru_export void gru_config_read_int(const char *name, FILE *source, int32_t *dest);
82 gru_export void gru_config_read_uint(const char *name, FILE *source, uint32_t *dest);
83 gru_export void gru_config_read_long(const char *name, FILE *source, int64_t *dest);
84 gru_export void gru_config_read_ulong(const char *name, FILE *source, uint64_t *dest);
85 
86 gru_export void gru_config_write_short(const char *name, FILE *dest, int16_t value);
87 gru_export void gru_config_write_ushort(const char *name, FILE *dest, uint16_t value);
88 gru_export void gru_config_write_int(const char *name, FILE *dest, int32_t value);
89 gru_export void gru_config_write_uint(const char *name, FILE *dest, uint32_t value);
90 gru_export void gru_config_write_long(const char *name, FILE *dest, int64_t value);
91 gru_export void gru_config_write_ulong(const char *name, FILE *dest, uint64_t value);
92 
93 gru_export void gru_config_write_string(const char *name, FILE *dest, const char *value);
94 
95 #ifdef __cplusplus
96 }
97 #endif
98 
99 #endif /* GRU_CONFIG_H */
gru_export void gru_config_write_int(const char *name, FILE *dest, int32_t value)
Definition: gru_config.c:153
gru_export gru_config_t * gru_config_new(const char *dir, const char *filename, gru_status_t *status)
Creates a new configuration object.
Definition: gru_config.c:18
gru_export bool gru_config_init_for_dump(gru_config_t *config, gru_payload_t *payload, gru_status_t *status)
Don't really initialize the config, just dump the payload.
Definition: gru_config.c:51
gru_export void gru_config_read_ulong(const char *name, FILE *source, uint64_t *dest)
Definition: gru_config.c:141
gru_export void gru_config_write_uint(const char *name, FILE *dest, uint32_t value)
Definition: gru_config.c:157
gru_export void gru_config_destroy(gru_config_t **config)
Definition: gru_config.c:65
gru_export void gru_config_read_int(const char *name, FILE *source, int32_t *dest)
Definition: gru_config.c:129
gru_export void gru_config_write_string(const char *name, FILE *dest, const char *value)
Definition: gru_config.c:169
gru_export void gru_config_read_uint(const char *name, FILE *source, uint32_t *dest)
Definition: gru_config.c:133
gru_export void gru_config_read_string(const char *name, FILE *source, char *dest)
Definition: gru_config.c:117
gru_export void gru_config_read_short(const char *name, FILE *source, int16_t *dest)
Definition: gru_config.c:121
gru_export void gru_config_write_long(const char *name, FILE *dest, int64_t value)
Definition: gru_config.c:161
gru_export void gru_config_read_long(const char *name, FILE *source, int64_t *dest)
Definition: gru_config.c:137
gru_export void gru_config_write_ushort(const char *name, FILE *dest, uint16_t value)
Definition: gru_config.c:149
struct gru_config_t_ gru_config_t
gru_export void gru_config_read_ushort(const char *name, FILE *source, uint16_t *dest)
Definition: gru_config.c:125
gru_export void gru_config_write_ulong(const char *name, FILE *dest, uint64_t value)
Definition: gru_config.c:165
gru_export void gru_config_write_short(const char *name, FILE *dest, int16_t value)
Definition: gru_config.c:145
gru_export bool gru_config_init_from_payload(gru_config_t *config, gru_payload_t *payload, gru_status_t *status)
Initializes a new configuration object.
Definition: gru_config.c:36
gru_export void gru_config_set(char *dest, uint32_t size, const char *fmt,...)
Definition: gru_config.c:73
#define gru_export
Definition: gru_portable.h:19
Definition: gru_config.h:43
char * filename
Definition: gru_config.h:45
gru_payload_t * payload
Definition: gru_config.h:48
char * dir
Definition: gru_config.h:44
FILE * file
Definition: gru_config.h:46
Definition: gru_payload.h:40
Status type.
Definition: gru_status.h:47