summaryrefslogtreecommitdiff
path: root/include/disfluid.h
blob: 8c529227eac98eb383bdaa50dae0b85dab3a493c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
#ifndef H_DISFLUID_INCLUDED
# define H_DISFLUID_INCLUDED

# include <stdlib.h>
# include <stdio.h>
# include <time.h>

# if defined _WIN32 && !defined __CYGWIN__
#  define LIBDISFLUID_DLL_MADNESS 1
# else
#  define LIBDISFLUID_DLL_MADNESS 0
# endif

# if BUILDING_LIBDISFLUID && HAVE_VISIBILITY
#  define LIBDISFLUID_DLL_EXPORTED __attribute__((__visibility__("default")))
# elif BUILDING_LIBDISFLUID && LIBDISFLUID_DLL_MADNESS
#  define LIBDISFLUID_DLL_EXPORTED __declspec(dllexport)
# elif LIBDISFLUID_DLL_MADNESS
#  define LIBDISFLUID_DLL_EXPORTED __declspec(dllimport)
# else
#  define LIBDISFLUID_DLL_EXPORTED
# endif

# define LIBDISFLUID_API \
  LIBDISFLUID_DLL_EXPORTED

# ifdef ATTRIBUTE_DEALLOC
#  define LIBDISFLUID_DEALLOC_WITH ATTRIBUTE_DEALLOC
# else
#  define LIBDISFLUID_DEALLOC_WITH(f, i)
# endif

# ifdef ATTRIBUTE_DEALLOC_FREE
#  define LIBDISFLUID_DEALLOC_WITH_FREE ATTRIBUTE_DEALLOC_FREE
# else
#  define LIBDISFLUID_DEALLOC_WITH_FREE
# endif

# ifdef ATTRIBUTE_CONST
#  define LIBDISFLUID_CONST ATTRIBUTE_CONST
# else
#  define LIBDISFLUID_CONST
# endif

# ifdef ATTRIBUTE_FD_ARG
#  define LIBDISFLUID_FD_ARG ATTRIBUTE_FD_ARG
# else
#  define LIBDISFLUID_FD_ARG()
# endif

# define LIBDISFLUID_FD_ARG_1 \
  LIBDISFLUID_FD_ARG (1)

# ifdef ATTRIBUTE_FD_ARG_READ
#  define LIBDISFLUID_FD_ARG_READ ATTRIBUTE_FD_ARG_READ
# else
#  define LIBDISFLUID_FD_ARG_READ(i)
# endif

# define LIBDISFLUID_FD_ARG_READ_1 \
  LIBDISFLUID_FD_ARG_READ (1)

# ifdef ATTRIBUTE_FD_ARG_WRITE
#  define LIBDISFLUID_FD_ARG_WRITE ATTRIBUTE_FD_ARG_WRITE
# else
#  define LIBDISFLUID_FD_ARG_WRITE(i)
# endif

# define LIBDISFLUID_FD_ARG_WRITE_1 \
  LIBDISFLUID_FD_ARG_WRITE (1)

# define LIBDISFLUID_FD_ARG_WRITE_2 \
  LIBDISFLUID_FD_ARG_WRITE (2)

# define LIBDISFLUID_DEALLOC_AS_CACHE_ENTRY \
  LIBDISFLUID_DEALLOC_WITH (disfluid_cache_entry_free, 1)

# ifdef __cplusplus
extern "C"
{
# endif				/* __cplusplus */

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_version (void);

  LIBDISFLUID_CONST LIBDISFLUID_API extern int disfluid_is_nightly (void);

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_whats_new (void);

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_major_version (void);

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_website (void);

  /* Run the disfluid unit tests. The return value must be deallocated
     with free. */
  LIBDISFLUID_API LIBDISFLUID_DEALLOC_WITH_FREE char
    *disfluid_run_tests (size_t *n_tests, size_t *n_errors);

  LIBDISFLUID_CONST LIBDISFLUID_API extern size_t
    disfluid_count_authors (void);

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_author_name (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_author_email (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API extern const char
    *disfluid_author_uri (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API extern int
    disfluid_author_is_developer (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API extern int
    disfluid_author_is_designer (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API extern int
    disfluid_author_is_artist (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API extern int
    disfluid_author_is_documenter (size_t i);

  LIBDISFLUID_CONST LIBDISFLUID_API const char
    *disfluid_translation_credits (void);

  struct disfluid_cache_entry;

  LIBDISFLUID_API extern void
    disfluid_cache_entry_free (struct disfluid_cache_entry *entry);

  LIBDISFLUID_API LIBDISFLUID_DEALLOC_AS_CACHE_ENTRY
    extern struct disfluid_cache_entry *disfluid_cache_entry_alloc (void);

  LIBDISFLUID_API LIBDISFLUID_DEALLOC_AS_CACHE_ENTRY
    extern struct disfluid_cache_entry
    *disfluid_cache_entry_from_file_name (const char *filename);

  LIBDISFLUID_API LIBDISFLUID_DEALLOC_AS_CACHE_ENTRY
    LIBDISFLUID_FD_ARG_READ_1 extern struct disfluid_cache_entry
    *disfluid_cache_entry_from_fd (int fd);

  LIBDISFLUID_API LIBDISFLUID_DEALLOC_AS_CACHE_ENTRY
    extern struct disfluid_cache_entry
    *disfluid_cache_entry_dup (const struct disfluid_cache_entry *entry);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_set_request_date (struct disfluid_cache_entry *entry,
					   const struct timespec
					   *request_date);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_set_response_date (struct disfluid_cache_entry
					    *entry,
					    const struct timespec
					    *request_date);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_invalidate (struct disfluid_cache_entry *entry);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_set_invalidated (struct disfluid_cache_entry *entry,
					  int invalidated);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_set_file_name (struct disfluid_cache_entry *entry,
					const char *filename);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_get_request_date (const struct disfluid_cache_entry
					   *entry, struct timespec *date);

  LIBDISFLUID_API extern void
    disfluid_cache_entry_get_response_date (const struct disfluid_cache_entry
					    *entry, struct timespec *date);

  LIBDISFLUID_API extern int
    disfluid_cache_entry_invalidated (const struct disfluid_cache_entry
				      *entry);

  LIBDISFLUID_API LIBDISFLUID_DEALLOC_WITH_FREE extern char
    *disfluid_cache_entry_get_file_name (const struct disfluid_cache_entry
					 *entry);

  LIBDISFLUID_API extern int
    disfluid_cache_entry_save_other_file_name (const struct
					       disfluid_cache_entry *entry,
					       const char *filename);

  LIBDISFLUID_API LIBDISFLUID_FD_ARG_WRITE_2 extern int
    disfluid_cache_entry_save_other_fd (const struct disfluid_cache_entry
					*entry, int fd);

# ifdef __cplusplus
}
# endif				/* __cplusplus */

#endif				/* not H_DISFLUID_INCLUDED */