1 /* valadoc.c generated by valac, the Vala compiler
2 * generated from valadoc.vala, do not modify */
3
4 /* valadoc.vala
5 *
6 * Copyright (C) 2008-2014 Florian Brosch
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * Author:
23 * Florian Brosch <flo.brosch@gmail.com>
24 */
25
26 #include <glib-object.h>
27 #include <stdlib.h>
28 #include <string.h>
29 #include <glib.h>
30 #include <stdio.h>
31 #include <valadoc.h>
32 #include <vala.h>
33 #include <valacodegen.h>
34 #include <locale.h>
35 #include <glib/gstdio.h>
36
37 #define TYPE_VALA_DOC (vala_doc_get_type ())
38 #define VALA_DOC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VALA_DOC, ValaDoc))
39 #define VALA_DOC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VALA_DOC, ValaDocClass))
40 #define IS_VALA_DOC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VALA_DOC))
41 #define IS_VALA_DOC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VALA_DOC))
42 #define VALA_DOC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VALA_DOC, ValaDocClass))
43
44 typedef struct _ValaDoc ValaDoc;
45 typedef struct _ValaDocClass ValaDocClass;
46 typedef struct _ValaDocPrivate ValaDocPrivate;
47 enum {
48 VALA_DOC_0_PROPERTY,
49 VALA_DOC_NUM_PROPERTIES
50 };
51 static GParamSpec* vala_doc_properties[VALA_DOC_NUM_PROPERTIES];
52 #define _g_free0(var) (var = (g_free (var), NULL))
53 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
54 #define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
55
56 #define VALADOC_TYPE_TREE_BUILDER (valadoc_tree_builder_get_type ())
57 #define VALADOC_TREE_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALADOC_TYPE_TREE_BUILDER, ValadocTreeBuilder))
58 #define VALADOC_TREE_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALADOC_TYPE_TREE_BUILDER, ValadocTreeBuilderClass))
59 #define VALADOC_IS_TREE_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALADOC_TYPE_TREE_BUILDER))
60 #define VALADOC_IS_TREE_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALADOC_TYPE_TREE_BUILDER))
61 #define VALADOC_TREE_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALADOC_TYPE_TREE_BUILDER, ValadocTreeBuilderClass))
62
63 typedef struct _ValadocTreeBuilder ValadocTreeBuilder;
64 typedef struct _ValadocTreeBuilderClass ValadocTreeBuilderClass;
65 #define _valadoc_api_tree_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_tree_unref (var), NULL)))
66 #define _vala_code_visitor_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_visitor_unref (var), NULL)))
67
68 #define VALADOC_TYPE_SYMBOL_RESOLVER (valadoc_symbol_resolver_get_type ())
69 #define VALADOC_SYMBOL_RESOLVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALADOC_TYPE_SYMBOL_RESOLVER, ValadocSymbolResolver))
70 #define VALADOC_SYMBOL_RESOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALADOC_TYPE_SYMBOL_RESOLVER, ValadocSymbolResolverClass))
71 #define VALADOC_IS_SYMBOL_RESOLVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALADOC_TYPE_SYMBOL_RESOLVER))
72 #define VALADOC_IS_SYMBOL_RESOLVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALADOC_TYPE_SYMBOL_RESOLVER))
73 #define VALADOC_SYMBOL_RESOLVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALADOC_TYPE_SYMBOL_RESOLVER, ValadocSymbolResolverClass))
74
75 typedef struct _ValadocSymbolResolver ValadocSymbolResolver;
76 typedef struct _ValadocSymbolResolverClass ValadocSymbolResolverClass;
77
78 #define VALADOC_TYPE_GIR_WRITER (valadoc_gir_writer_get_type ())
79 #define VALADOC_GIR_WRITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALADOC_TYPE_GIR_WRITER, ValadocGirWriter))
80 #define VALADOC_GIR_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALADOC_TYPE_GIR_WRITER, ValadocGirWriterClass))
81 #define VALADOC_IS_GIR_WRITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALADOC_TYPE_GIR_WRITER))
82 #define VALADOC_IS_GIR_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALADOC_TYPE_GIR_WRITER))
83 #define VALADOC_GIR_WRITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALADOC_TYPE_GIR_WRITER, ValadocGirWriterClass))
84
85 typedef struct _ValadocGirWriter ValadocGirWriter;
86 typedef struct _ValadocGirWriterClass ValadocGirWriterClass;
87 #define _g_option_context_free0(var) ((var == NULL) ? NULL : (var = (g_option_context_free (var), NULL)))
88 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
89
90 struct _ValaDoc {
91 GObject parent_instance;
92 ValaDocPrivate * priv;
93 };
94
95 struct _ValaDocClass {
96 GObjectClass parent_class;
97 };
98
99 static gpointer vala_doc_parent_class = NULL;
100 static gchar* vala_doc_directory;
101 static gchar* vala_doc_basedir;
102 static gchar** vala_doc_defines;
103 static gchar* vala_doc_profile;
104 static gboolean vala_doc_experimental;
105 static gboolean vala_doc_experimental_non_null;
106 static gchar** vala_doc_metadata_directories;
107 static gchar** vala_doc_gir_directories;
108 static gchar** vala_doc_vapi_directories;
109 static gchar** vala_doc_packages;
110 static gchar** vala_doc_import_directories;
111 static gchar** vala_doc_import_packages;
112 static gchar** vala_doc_alternative_resource_dirs;
113 static gchar* vala_doc_wikidirectory;
114 static gboolean vala_doc_with_deps;
115 static gchar* vala_doc_docletpath;
116 static gchar** vala_doc_pluginargs;
117 static gboolean vala_doc__protected;
118 static gboolean vala_doc__internal;
119 static gboolean vala_doc__private;
120 static gboolean vala_doc_use_svg_images;
121 static gchar* vala_doc_pkg_name;
122 static gchar* vala_doc_pkg_version;
123 static gchar* vala_doc_gir_name;
124 static gboolean vala_doc_version;
125 static gboolean vala_doc_force;
126 static gboolean vala_doc_fatal_warnings;
127 static gboolean vala_doc_verbose;
128 static gboolean vala_doc_disable_diagnostic_colors;
129 static gchar* vala_doc_target_glib;
130 static gchar** vala_doc_tsources;
131 static gchar* vala_doc_wikidirectory = NULL;
132 static gchar* vala_doc_pkg_version = NULL;
133 static gchar* vala_doc_docletpath = NULL;
134 static gchar** vala_doc_pluginargs = NULL;
135 static gchar* vala_doc_directory = NULL;
136 static gchar* vala_doc_pkg_name = NULL;
137 static gchar* vala_doc_gir_name = NULL;
138 static gchar* vala_doc_gir_namespace;
139 static gchar* vala_doc_gir_namespace = NULL;
140 static gchar* vala_doc_gir_version;
141 static gchar* vala_doc_gir_version = NULL;
142 static gboolean vala_doc_add_inherited;
143 static gboolean vala_doc_add_inherited = FALSE;
144 static gboolean vala_doc__protected = TRUE;
145 static gboolean vala_doc__internal = FALSE;
146 static gboolean vala_doc_with_deps = FALSE;
147 static gboolean vala_doc__private = FALSE;
148 static gboolean vala_doc_version = FALSE;
149 static gboolean vala_doc_use_svg_images = FALSE;
150 static gboolean vala_doc_disable_diagnostic_colors = FALSE;
151 static gboolean vala_doc_verbose = FALSE;
152 static gboolean vala_doc_force = FALSE;
153 static gboolean vala_doc_fatal_warnings = FALSE;
154 static gchar* vala_doc_basedir = NULL;
155 static gchar** vala_doc_defines = NULL;
156 static gboolean vala_doc_experimental = FALSE;
157 static gboolean vala_doc_experimental_non_null = FALSE;
158 static gchar* vala_doc_profile = NULL;
159 static gchar** vala_doc_import_packages = NULL;
160 static gchar** vala_doc_import_directories = NULL;
161 static gchar** vala_doc_vapi_directories = NULL;
162 static gchar** vala_doc_metadata_directories = NULL;
163 static gchar** vala_doc_gir_directories = NULL;
164 static gchar** vala_doc_tsources = NULL;
165 static gchar** vala_doc_packages = NULL;
166 static gchar** vala_doc_alternative_resource_dirs = NULL;
167 static gchar* vala_doc_target_glib = NULL;
168
169 GType vala_doc_get_type (void) G_GNUC_CONST;
170 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValaDoc, g_object_unref)
171 #define VALA_DOC_DEFAULT_COLORS "error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01"
172 static gboolean vala_doc_option_deprecated (const gchar* option_name,
173 const gchar* val,
174 void* data,
175 GError** error);
176 static gint vala_doc_quit (ValadocErrorReporter* reporter,
177 gboolean pop_context);
178 static gboolean vala_doc_check_pkg_name (void);
179 static gchar* vala_doc_get_pkg_name (ValaDoc* self);
180 static ValadocModuleLoader* vala_doc_create_module_loader (ValaDoc* self,
181 ValadocErrorReporter* reporter,
182 ValadocDoclet* * doclet);
183 static gint vala_doc_run (ValaDoc* self,
184 ValadocErrorReporter* reporter);
185 static gchar** _vala_array_dup1 (gchar** self,
186 gint length);
187 static gchar** _vala_array_dup2 (gchar** self,
188 gint length);
189 static gchar** _vala_array_dup3 (gchar** self,
190 gint length);
191 static gchar** _vala_array_dup4 (gchar** self,
192 gint length);
193 static gchar** _vala_array_dup5 (gchar** self,
194 gint length);
195 static gchar** _vala_array_dup6 (gchar** self,
196 gint length);
197 static gchar** _vala_array_dup7 (gchar** self,
198 gint length);
199 static gchar** _vala_array_dup8 (gchar** self,
200 gint length);
201 GType valadoc_tree_builder_get_type (void) G_GNUC_CONST;
202 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValadocTreeBuilder, vala_code_visitor_unref)
203 ValadocTreeBuilder* valadoc_tree_builder_new (void);
204 ValadocTreeBuilder* valadoc_tree_builder_construct (GType object_type);
205 ValadocApiTree* valadoc_tree_builder_build (ValadocTreeBuilder* self,
206 ValadocSettings* settings,
207 ValadocErrorReporter* reporter);
208 GType valadoc_symbol_resolver_get_type (void) G_GNUC_CONST;
209 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValadocSymbolResolver, g_object_unref)
210 ValadocSymbolResolver* valadoc_symbol_resolver_new (ValadocTreeBuilder* builder);
211 ValadocSymbolResolver* valadoc_symbol_resolver_construct (GType object_type,
212 ValadocTreeBuilder* builder);
213 GType valadoc_gir_writer_get_type (void) G_GNUC_CONST;
214 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValadocGirWriter, vala_code_visitor_unref)
215 ValadocGirWriter* valadoc_gir_writer_new (ValadocSymbolResolver* resolver);
216 ValadocGirWriter* valadoc_gir_writer_construct (GType object_type,
217 ValadocSymbolResolver* resolver);
218 static gint vala_doc_main (gchar** args,
219 gint args_length1);
220 ValaDoc* vala_doc_new (void);
221 ValaDoc* vala_doc_construct (GType object_type);
222 static void vala_doc_finalize (GObject * obj);
223 static GType vala_doc_get_type_once (void);
224 static void _vala_array_destroy (gpointer array,
225 gint array_length,
226 GDestroyNotify destroy_func);
227 static void _vala_array_free (gpointer array,
228 gint array_length,
229 GDestroyNotify destroy_func);
230 static gint _vala_array_length (gpointer array);
231
232 static const GOptionEntry VALA_DOC_options[33] = {{"directory", 'o', 0, G_OPTION_ARG_FILENAME, &vala_doc_directory, "Output directory", "DIRECTORY"}, {"basedir", 'b', 0, G_OPTION_ARG_FILENAME, &vala_doc_basedir, "Base source directory", "DIRECTORY"}, {"define", 'D', 0, G_OPTION_ARG_STRING_ARRAY, &vala_doc_defines, "Define SYMBOL", "SYMBOL..."}, {"profile", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_doc_profile, "Use the given profile instead of the default", "PROFILE"}, {"enable-experimental", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_experimental, "Enable experimental features", NULL}, {"enable-experimental-non-null", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_experimental_non_null, "Enable experimental enhancements for non-null types", NULL}, {"metadatadir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_doc_metadata_directories, "Look for GIR .metadata files in DIRECTORY", "DIRECTORY..."}, {"girdir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_doc_gir_directories, "Look for .gir files in DIRECTORY", "DIRECTORY..."}, {"vapidir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_doc_vapi_directories, "Look for package bindings in DIRECTORY", "DIRECTORY..."}, {"pkg", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_doc_packages, "Include binding for PACKAGE", "PACKAGE..."}, {"driver", (gchar) 0, (gint) G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, (void*) vala_doc_option_deprecated, "Name of an driver or path to a custom driver (DEPRECATED AND IGNORED)", NULL}, {"importdir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_doc_import_directories, "Look for external documentation in DIRECTORY", "DIRECTORY..."}, {"import", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_doc_import_packages, "Include binding for PACKAGE", "PACKAGE..."}, {"alternative-resource-dir", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_doc_alternative_resource_dirs, "Alternative resource directories", "DIRECTORY..."}, {"wiki", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_doc_wikidirectory, "Wiki directory", "DIRECTORY"}, {"deps", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_with_deps, "Adds packages to the documentation", NULL}, {"doclet", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_doc_docletpath, "Name of an included doclet or path to custom doclet", "PLUGIN"}, {"doclet-arg", 'X', 0, G_OPTION_ARG_STRING_ARRAY, &vala_doc_pluginargs, "Pass arguments to the doclet", "ARG"}, {"no-protected", (gchar) 0, (gint) G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &vala_doc__protected, "Removes protected elements from documentation", NULL}, {"internal", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc__internal, "Adds internal elements to documentation", NULL}, {"private", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc__private, "Adds private elements to documentation", NULL}, {"use-svg-images", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_use_svg_images, "Generate SVG image charts instead of PNG", NULL}, {"package-name", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_doc_pkg_name, "package name", "NAME"}, {"package-version", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_doc_pkg_version, "package version", "VERSION"}, {"gir", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_doc_gir_name, "GObject-Introspection repository file name", "NAME-VERSION.gir"}, {"version", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_version, "Display version number", NULL}, {"force", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_force, "force", NULL}, {"fatal-warnings", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_fatal_warnings, "Treat warnings as fatal", NULL}, {"verbose", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_verbose, "Show all warnings", NULL}, {"no-color", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_doc_disable_diagnostic_colors, "Disable colored output", NULL}, {"target-glib", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_doc_target_glib, "Target version of glib for code generation", "'MAJOR.MINOR', or 'auto'"}, {G_OPTION_REMAINING, (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_doc_tsources, NULL, "FILE..."}, {NULL}};
233
234 static gboolean
vala_doc_option_deprecated(const gchar * option_name,const gchar * val,void * data,GError ** error)235 vala_doc_option_deprecated (const gchar* option_name,
236 const gchar* val,
237 void* data,
238 GError** error)
239 {
240 FILE* _tmp0_;
241 gboolean result = FALSE;
242 g_return_val_if_fail (option_name != NULL, FALSE);
243 _tmp0_ = stdout;
244 fprintf (_tmp0_, "Command-line option `%s` is deprecated and will be ignored\n", option_name);
245 result = TRUE;
246 return result;
247 }
248
249 static gint
vala_doc_quit(ValadocErrorReporter * reporter,gboolean pop_context)250 vala_doc_quit (ValadocErrorReporter* reporter,
251 gboolean pop_context)
252 {
253 gboolean _tmp0_ = FALSE;
254 gint _tmp1_;
255 gint _tmp2_;
256 gint result = 0;
257 g_return_val_if_fail (reporter != NULL, 0);
258 _tmp1_ = valadoc_error_reporter_get_errors (reporter);
259 _tmp2_ = _tmp1_;
260 if (_tmp2_ == 0) {
261 gboolean _tmp3_ = FALSE;
262 if (!vala_doc_fatal_warnings) {
263 _tmp3_ = TRUE;
264 } else {
265 gint _tmp4_;
266 gint _tmp5_;
267 _tmp4_ = valadoc_error_reporter_get_warnings (reporter);
268 _tmp5_ = _tmp4_;
269 _tmp3_ = _tmp5_ == 0;
270 }
271 _tmp0_ = _tmp3_;
272 } else {
273 _tmp0_ = FALSE;
274 }
275 if (_tmp0_) {
276 FILE* _tmp6_;
277 gint _tmp7_;
278 gint _tmp8_;
279 _tmp6_ = stdout;
280 _tmp7_ = valadoc_error_reporter_get_warnings (reporter);
281 _tmp8_ = _tmp7_;
282 fprintf (_tmp6_, "Succeeded - %d warning(s)\n", _tmp8_);
283 if (pop_context) {
284 vala_code_context_pop ();
285 }
286 result = 0;
287 return result;
288 } else {
289 FILE* _tmp9_;
290 gint _tmp10_;
291 gint _tmp11_;
292 gint _tmp12_;
293 gint _tmp13_;
294 _tmp9_ = stdout;
295 _tmp10_ = valadoc_error_reporter_get_errors (reporter);
296 _tmp11_ = _tmp10_;
297 _tmp12_ = valadoc_error_reporter_get_warnings (reporter);
298 _tmp13_ = _tmp12_;
299 fprintf (_tmp9_, "Failed: %d error(s), %d warning(s)\n", _tmp11_, _tmp13_);
300 if (pop_context) {
301 vala_code_context_pop ();
302 }
303 result = 1;
304 return result;
305 }
306 }
307
308 static gboolean
vala_doc_check_pkg_name(void)309 vala_doc_check_pkg_name (void)
310 {
311 const gchar* _tmp0_;
312 gboolean _tmp1_ = FALSE;
313 const gchar* _tmp2_;
314 gchar** _tmp4_;
315 gint _tmp4__length1;
316 gboolean result = FALSE;
317 _tmp0_ = vala_doc_pkg_name;
318 if (_tmp0_ == NULL) {
319 result = TRUE;
320 return result;
321 }
322 _tmp2_ = vala_doc_pkg_name;
323 if (g_strcmp0 (_tmp2_, "glib-2.0") == 0) {
324 _tmp1_ = TRUE;
325 } else {
326 const gchar* _tmp3_;
327 _tmp3_ = vala_doc_pkg_name;
328 _tmp1_ = g_strcmp0 (_tmp3_, "gobject-2.0") == 0;
329 }
330 if (_tmp1_) {
331 result = FALSE;
332 return result;
333 }
334 _tmp4_ = vala_doc_tsources;
335 _tmp4__length1 = _vala_array_length (vala_doc_tsources);
336 {
337 gchar** package_collection = NULL;
338 gint package_collection_length1 = 0;
339 gint _package_collection_size_ = 0;
340 gint package_it = 0;
341 package_collection = _tmp4_;
342 package_collection_length1 = _tmp4__length1;
343 for (package_it = 0; package_it < package_collection_length1; package_it = package_it + 1) {
344 gchar* _tmp5_;
345 gchar* package = NULL;
346 _tmp5_ = g_strdup (package_collection[package_it]);
347 package = _tmp5_;
348 {
349 const gchar* _tmp6_;
350 const gchar* _tmp7_;
351 _tmp6_ = vala_doc_pkg_name;
352 _tmp7_ = package;
353 if (g_strcmp0 (_tmp6_, _tmp7_) == 0) {
354 result = FALSE;
355 _g_free0 (package);
356 return result;
357 }
358 _g_free0 (package);
359 }
360 }
361 }
362 result = TRUE;
363 return result;
364 }
365
366 static gchar*
vala_doc_get_pkg_name(ValaDoc * self)367 vala_doc_get_pkg_name (ValaDoc* self)
368 {
369 const gchar* _tmp0_;
370 const gchar* _tmp6_;
371 gchar* _tmp7_;
372 gchar* result = NULL;
373 g_return_val_if_fail (self != NULL, NULL);
374 _tmp0_ = vala_doc_pkg_name;
375 if (_tmp0_ == NULL) {
376 const gchar* _tmp1_;
377 _tmp1_ = vala_doc_directory;
378 if (g_str_has_suffix (_tmp1_, "/")) {
379 const gchar* _tmp2_;
380 gchar* _tmp3_;
381 _tmp2_ = vala_doc_directory;
382 _tmp3_ = g_path_get_dirname (_tmp2_);
383 _g_free0 (vala_doc_pkg_name);
384 vala_doc_pkg_name = _tmp3_;
385 } else {
386 const gchar* _tmp4_;
387 gchar* _tmp5_;
388 _tmp4_ = vala_doc_directory;
389 _tmp5_ = g_path_get_basename (_tmp4_);
390 _g_free0 (vala_doc_pkg_name);
391 vala_doc_pkg_name = _tmp5_;
392 }
393 }
394 _tmp6_ = vala_doc_pkg_name;
395 _tmp7_ = g_strdup (_tmp6_);
396 result = _tmp7_;
397 return result;
398 }
399
400 static ValadocModuleLoader*
vala_doc_create_module_loader(ValaDoc * self,ValadocErrorReporter * reporter,ValadocDoclet ** doclet)401 vala_doc_create_module_loader (ValaDoc* self,
402 ValadocErrorReporter* reporter,
403 ValadocDoclet* * doclet)
404 {
405 ValadocDoclet* _vala_doclet = NULL;
406 ValadocModuleLoader* modules = NULL;
407 ValadocModuleLoader* _tmp0_;
408 gchar* pluginpath = NULL;
409 const gchar* _tmp1_;
410 gchar* _tmp2_;
411 const gchar* _tmp3_;
412 ValadocModuleLoader* _tmp4_;
413 const gchar* _tmp5_;
414 ValadocDoclet* _tmp6_;
415 ValadocDoclet* _tmp7_;
416 ValadocModuleLoader* result = NULL;
417 g_return_val_if_fail (self != NULL, NULL);
418 g_return_val_if_fail (reporter != NULL, NULL);
419 _tmp0_ = valadoc_module_loader_get_instance ();
420 modules = _tmp0_;
421 _g_object_unref0 (_vala_doclet);
422 _vala_doclet = NULL;
423 _tmp1_ = vala_doc_docletpath;
424 _tmp2_ = valadoc_module_loader_get_doclet_path (_tmp1_, reporter);
425 pluginpath = _tmp2_;
426 _tmp3_ = pluginpath;
427 if (_tmp3_ == NULL) {
428 result = NULL;
429 _g_free0 (pluginpath);
430 _g_object_unref0 (modules);
431 if (doclet) {
432 *doclet = _vala_doclet;
433 } else {
434 _g_object_unref0 (_vala_doclet);
435 }
436 return result;
437 }
438 _tmp4_ = modules;
439 _tmp5_ = pluginpath;
440 _tmp6_ = valadoc_module_loader_create_doclet (_tmp4_, _tmp5_);
441 _g_object_unref0 (_vala_doclet);
442 _vala_doclet = _tmp6_;
443 _tmp7_ = _vala_doclet;
444 if (_tmp7_ == NULL) {
445 valadoc_error_reporter_simple_error (reporter, NULL, "failed to load doclet");
446 result = NULL;
447 _g_free0 (pluginpath);
448 _g_object_unref0 (modules);
449 if (doclet) {
450 *doclet = _vala_doclet;
451 } else {
452 _g_object_unref0 (_vala_doclet);
453 }
454 return result;
455 }
456 result = modules;
457 _g_free0 (pluginpath);
458 if (doclet) {
459 *doclet = _vala_doclet;
460 } else {
461 _g_object_unref0 (_vala_doclet);
462 }
463 return result;
464 }
465
466 static gchar**
_vala_array_dup1(gchar ** self,gint length)467 _vala_array_dup1 (gchar** self,
468 gint length)
469 {
470 if (length >= 0) {
471 gchar** result;
472 gint i;
473 result = g_new0 (gchar*, length + 1);
474 for (i = 0; i < length; i++) {
475 gchar* _tmp0_;
476 _tmp0_ = g_strdup (self[i]);
477 result[i] = _tmp0_;
478 }
479 return result;
480 }
481 return NULL;
482 }
483
484 static gchar**
_vala_array_dup2(gchar ** self,gint length)485 _vala_array_dup2 (gchar** self,
486 gint length)
487 {
488 if (length >= 0) {
489 gchar** result;
490 gint i;
491 result = g_new0 (gchar*, length + 1);
492 for (i = 0; i < length; i++) {
493 gchar* _tmp0_;
494 _tmp0_ = g_strdup (self[i]);
495 result[i] = _tmp0_;
496 }
497 return result;
498 }
499 return NULL;
500 }
501
502 static gchar**
_vala_array_dup3(gchar ** self,gint length)503 _vala_array_dup3 (gchar** self,
504 gint length)
505 {
506 if (length >= 0) {
507 gchar** result;
508 gint i;
509 result = g_new0 (gchar*, length + 1);
510 for (i = 0; i < length; i++) {
511 gchar* _tmp0_;
512 _tmp0_ = g_strdup (self[i]);
513 result[i] = _tmp0_;
514 }
515 return result;
516 }
517 return NULL;
518 }
519
520 static gchar**
_vala_array_dup4(gchar ** self,gint length)521 _vala_array_dup4 (gchar** self,
522 gint length)
523 {
524 if (length >= 0) {
525 gchar** result;
526 gint i;
527 result = g_new0 (gchar*, length + 1);
528 for (i = 0; i < length; i++) {
529 gchar* _tmp0_;
530 _tmp0_ = g_strdup (self[i]);
531 result[i] = _tmp0_;
532 }
533 return result;
534 }
535 return NULL;
536 }
537
538 static gchar**
_vala_array_dup5(gchar ** self,gint length)539 _vala_array_dup5 (gchar** self,
540 gint length)
541 {
542 if (length >= 0) {
543 gchar** result;
544 gint i;
545 result = g_new0 (gchar*, length + 1);
546 for (i = 0; i < length; i++) {
547 gchar* _tmp0_;
548 _tmp0_ = g_strdup (self[i]);
549 result[i] = _tmp0_;
550 }
551 return result;
552 }
553 return NULL;
554 }
555
556 static gchar**
_vala_array_dup6(gchar ** self,gint length)557 _vala_array_dup6 (gchar** self,
558 gint length)
559 {
560 if (length >= 0) {
561 gchar** result;
562 gint i;
563 result = g_new0 (gchar*, length + 1);
564 for (i = 0; i < length; i++) {
565 gchar* _tmp0_;
566 _tmp0_ = g_strdup (self[i]);
567 result[i] = _tmp0_;
568 }
569 return result;
570 }
571 return NULL;
572 }
573
574 static gchar**
_vala_array_dup7(gchar ** self,gint length)575 _vala_array_dup7 (gchar** self,
576 gint length)
577 {
578 if (length >= 0) {
579 gchar** result;
580 gint i;
581 result = g_new0 (gchar*, length + 1);
582 for (i = 0; i < length; i++) {
583 gchar* _tmp0_;
584 _tmp0_ = g_strdup (self[i]);
585 result[i] = _tmp0_;
586 }
587 return result;
588 }
589 return NULL;
590 }
591
592 static gchar**
_vala_array_dup8(gchar ** self,gint length)593 _vala_array_dup8 (gchar** self,
594 gint length)
595 {
596 if (length >= 0) {
597 gchar** result;
598 gint i;
599 result = g_new0 (gchar*, length + 1);
600 for (i = 0; i < length; i++) {
601 gchar* _tmp0_;
602 _tmp0_ = g_strdup (self[i]);
603 result[i] = _tmp0_;
604 }
605 return result;
606 }
607 return NULL;
608 }
609
610 static gint
vala_doc_run(ValaDoc * self,ValadocErrorReporter * reporter)611 vala_doc_run (ValaDoc* self,
612 ValadocErrorReporter* reporter)
613 {
614 ValadocSettings* settings = NULL;
615 ValadocSettings* _tmp0_;
616 ValadocSettings* _tmp1_;
617 ValadocSettings* _tmp2_;
618 gchar* _tmp3_;
619 ValadocSettings* _tmp4_;
620 const gchar* _tmp5_;
621 gchar* _tmp6_;
622 ValadocSettings* _tmp7_;
623 const gchar* _tmp8_;
624 gchar* _tmp9_;
625 const gchar* _tmp10_;
626 ValadocSettings* _tmp22_;
627 const gchar* _tmp23_;
628 gchar* _tmp24_;
629 ValadocSettings* _tmp25_;
630 ValadocSettings* _tmp26_;
631 ValadocSettings* _tmp27_;
632 ValadocSettings* _tmp28_;
633 ValadocSettings* _tmp29_;
634 ValadocSettings* _tmp30_;
635 const gchar* _tmp31_;
636 gchar* _tmp32_;
637 ValadocSettings* _tmp33_;
638 ValadocSettings* _tmp34_;
639 const gchar* _tmp35_;
640 gchar* _tmp36_;
641 ValadocSettings* _tmp37_;
642 gchar** _tmp38_;
643 gint _tmp38__length1;
644 gchar** _tmp39_;
645 gint _tmp39__length1;
646 ValadocSettings* _tmp40_;
647 ValadocSettings* _tmp41_;
648 ValadocSettings* _tmp42_;
649 const gchar* _tmp43_;
650 gchar* _tmp44_;
651 ValadocSettings* _tmp45_;
652 const gchar* _tmp46_;
653 gchar* _tmp47_;
654 ValadocSettings* _tmp48_;
655 gchar** _tmp49_;
656 gint _tmp49__length1;
657 gchar** _tmp50_;
658 gint _tmp50__length1;
659 ValadocSettings* _tmp51_;
660 gchar** _tmp52_;
661 gint _tmp52__length1;
662 gchar** _tmp53_;
663 gint _tmp53__length1;
664 ValadocSettings* _tmp54_;
665 gchar** _tmp55_;
666 gint _tmp55__length1;
667 gchar** _tmp56_;
668 gint _tmp56__length1;
669 ValadocSettings* _tmp57_;
670 const gchar* _tmp58_;
671 gchar* _tmp59_;
672 ValadocSettings* _tmp60_;
673 ValadocSettings* _tmp61_;
674 gchar** _tmp62_;
675 gint _tmp62__length1;
676 gchar** _tmp63_;
677 gint _tmp63__length1;
678 ValadocSettings* _tmp64_;
679 gchar** _tmp65_;
680 gint _tmp65__length1;
681 gchar** _tmp66_;
682 gint _tmp66__length1;
683 ValadocSettings* _tmp67_;
684 const gchar* _tmp68_;
685 gchar* _tmp69_;
686 ValadocSettings* _tmp70_;
687 gchar** _tmp71_;
688 gint _tmp71__length1;
689 gchar** _tmp72_;
690 gint _tmp72__length1;
691 ValadocSettings* _tmp73_;
692 gchar** _tmp74_;
693 gint _tmp74__length1;
694 gchar** _tmp75_;
695 gint _tmp75__length1;
696 ValaCodeContext* context = NULL;
697 ValaCodeContext* _tmp76_;
698 ValaCodeContext* _tmp77_;
699 ValadocDoclet* doclet = NULL;
700 ValadocModuleLoader* modules = NULL;
701 ValadocDoclet* _tmp78_ = NULL;
702 ValadocModuleLoader* _tmp79_;
703 gboolean _tmp80_ = FALSE;
704 gint _tmp81_;
705 gint _tmp82_;
706 ValadocTreeBuilder* builder = NULL;
707 ValadocTreeBuilder* _tmp84_;
708 ValadocApiTree* doctree = NULL;
709 ValadocTreeBuilder* _tmp85_;
710 ValadocSettings* _tmp86_;
711 ValadocApiTree* _tmp87_;
712 gint _tmp88_;
713 gint _tmp89_;
714 ValadocSymbolResolver* resolver = NULL;
715 ValadocTreeBuilder* _tmp90_;
716 ValadocSymbolResolver* _tmp91_;
717 ValadocApiTree* _tmp92_;
718 ValadocSymbolResolver* _tmp93_;
719 ValadocApiChildSymbolRegistrar* registrar = NULL;
720 ValadocApiChildSymbolRegistrar* _tmp94_;
721 ValadocApiTree* _tmp95_;
722 ValadocApiChildSymbolRegistrar* _tmp96_;
723 ValadocDocumentationParser* docparser = NULL;
724 ValadocSettings* _tmp97_;
725 ValadocApiTree* _tmp98_;
726 ValadocModuleLoader* _tmp99_;
727 ValadocDocumentationParser* _tmp100_;
728 ValadocApiTree* _tmp101_;
729 ValadocImporterDocumentationImporter** importers = NULL;
730 ValadocApiTree* _tmp102_;
731 ValadocDocumentationParser* _tmp103_;
732 ValadocModuleLoader* _tmp104_;
733 ValadocSettings* _tmp105_;
734 ValadocImporterValadocDocumentationImporter* _tmp106_;
735 ValadocApiTree* _tmp107_;
736 ValadocDocumentationParser* _tmp108_;
737 ValadocModuleLoader* _tmp109_;
738 ValadocSettings* _tmp110_;
739 ValadocImporterGirDocumentationImporter* _tmp111_;
740 ValadocImporterDocumentationImporter** _tmp112_;
741 gint importers_length1;
742 gint _importers_size_;
743 ValadocApiTree* _tmp113_;
744 ValadocDocumentationParser* _tmp114_;
745 gint _tmp115_;
746 gint _tmp116_;
747 ValadocApiTree* _tmp117_;
748 ValadocImporterDocumentationImporter** _tmp118_;
749 gint _tmp118__length1;
750 gchar** _tmp119_;
751 gint _tmp119__length1;
752 gchar** _tmp120_;
753 gint _tmp120__length1;
754 gint _tmp121_;
755 gint _tmp122_;
756 ValadocApiTree* _tmp123_;
757 ValadocDocumentationParser* _tmp124_;
758 gint _tmp125_;
759 gint _tmp126_;
760 const gchar* _tmp127_;
761 ValadocDoclet* _tmp150_;
762 ValadocSettings* _tmp151_;
763 ValadocApiTree* _tmp152_;
764 gint result = 0;
765 g_return_val_if_fail (self != NULL, 0);
766 g_return_val_if_fail (reporter != NULL, 0);
767 _tmp0_ = valadoc_settings_new ();
768 settings = _tmp0_;
769 _tmp1_ = settings;
770 valadoc_error_reporter_set_settings (reporter, _tmp1_);
771 _tmp2_ = settings;
772 _tmp3_ = vala_doc_get_pkg_name (self);
773 _g_free0 (_tmp2_->pkg_name);
774 _tmp2_->pkg_name = _tmp3_;
775 _tmp4_ = settings;
776 _tmp5_ = vala_doc_gir_namespace;
777 _tmp6_ = g_strdup (_tmp5_);
778 _g_free0 (_tmp4_->gir_namespace);
779 _tmp4_->gir_namespace = _tmp6_;
780 _tmp7_ = settings;
781 _tmp8_ = vala_doc_gir_version;
782 _tmp9_ = g_strdup (_tmp8_);
783 _g_free0 (_tmp7_->gir_version);
784 _tmp7_->gir_version = _tmp9_;
785 _tmp10_ = vala_doc_gir_name;
786 if (_tmp10_ != NULL) {
787 ValadocSettings* _tmp11_;
788 const gchar* _tmp12_;
789 gchar* _tmp13_;
790 ValadocSettings* _tmp14_;
791 const gchar* _tmp15_;
792 gchar* _tmp16_;
793 ValadocSettings* _tmp17_;
794 const gchar* _tmp18_;
795 _tmp11_ = settings;
796 _tmp12_ = vala_doc_gir_name;
797 _tmp13_ = g_path_get_basename (_tmp12_);
798 _g_free0 (_tmp11_->gir_name);
799 _tmp11_->gir_name = _tmp13_;
800 _tmp14_ = settings;
801 _tmp15_ = vala_doc_gir_name;
802 _tmp16_ = g_path_get_dirname (_tmp15_);
803 _g_free0 (_tmp14_->gir_directory);
804 _tmp14_->gir_directory = _tmp16_;
805 _tmp17_ = settings;
806 _tmp18_ = _tmp17_->gir_directory;
807 if (g_strcmp0 (_tmp18_, "") == 0) {
808 ValadocSettings* _tmp19_;
809 const gchar* _tmp20_;
810 gchar* _tmp21_;
811 _tmp19_ = settings;
812 _tmp20_ = vala_doc_directory;
813 _tmp21_ = g_path_get_dirname (_tmp20_);
814 _g_free0 (_tmp19_->gir_directory);
815 _tmp19_->gir_directory = _tmp21_;
816 }
817 }
818 _tmp22_ = settings;
819 _tmp23_ = vala_doc_pkg_version;
820 _tmp24_ = g_strdup (_tmp23_);
821 _g_free0 (_tmp22_->pkg_version);
822 _tmp22_->pkg_version = _tmp24_;
823 _tmp25_ = settings;
824 _tmp25_->add_inherited = vala_doc_add_inherited;
825 _tmp26_ = settings;
826 _tmp26_->_protected = vala_doc__protected;
827 _tmp27_ = settings;
828 _tmp27_->_internal = vala_doc__internal;
829 _tmp28_ = settings;
830 _tmp28_->with_deps = vala_doc_with_deps;
831 _tmp29_ = settings;
832 _tmp29_->_private = vala_doc__private;
833 _tmp30_ = settings;
834 _tmp31_ = vala_doc_directory;
835 _tmp32_ = vala_code_context_realpath (_tmp31_);
836 _g_free0 (_tmp30_->path);
837 _tmp30_->path = _tmp32_;
838 _tmp33_ = settings;
839 _tmp33_->verbose = vala_doc_verbose;
840 _tmp34_ = settings;
841 _tmp35_ = vala_doc_wikidirectory;
842 _tmp36_ = g_strdup (_tmp35_);
843 _g_free0 (_tmp34_->wiki_directory);
844 _tmp34_->wiki_directory = _tmp36_;
845 _tmp37_ = settings;
846 _tmp38_ = vala_doc_pluginargs;
847 _tmp38__length1 = _vala_array_length (vala_doc_pluginargs);
848 _tmp39_ = (_tmp38_ != NULL) ? _vala_array_dup1 (_tmp38_, _tmp38__length1) : _tmp38_;
849 _tmp39__length1 = _tmp38__length1;
850 _tmp37_->pluginargs = (_vala_array_free (_tmp37_->pluginargs, _tmp37_->pluginargs_length1, (GDestroyNotify) g_free), NULL);
851 _tmp37_->pluginargs = _tmp39_;
852 _tmp37_->pluginargs_length1 = _tmp39__length1;
853 _tmp40_ = settings;
854 _tmp40_->experimental = vala_doc_experimental;
855 _tmp41_ = settings;
856 _tmp41_->experimental_non_null = vala_doc_experimental_non_null;
857 _tmp42_ = settings;
858 _tmp43_ = vala_doc_basedir;
859 _tmp44_ = g_strdup (_tmp43_);
860 _g_free0 (_tmp42_->basedir);
861 _tmp42_->basedir = _tmp44_;
862 _tmp45_ = settings;
863 _tmp46_ = vala_doc_directory;
864 _tmp47_ = g_strdup (_tmp46_);
865 _g_free0 (_tmp45_->directory);
866 _tmp45_->directory = _tmp47_;
867 _tmp48_ = settings;
868 _tmp49_ = vala_doc_vapi_directories;
869 _tmp49__length1 = _vala_array_length (vala_doc_vapi_directories);
870 _tmp50_ = (_tmp49_ != NULL) ? _vala_array_dup2 (_tmp49_, _tmp49__length1) : _tmp49_;
871 _tmp50__length1 = _tmp49__length1;
872 _tmp48_->vapi_directories = (_vala_array_free (_tmp48_->vapi_directories, _tmp48_->vapi_directories_length1, (GDestroyNotify) g_free), NULL);
873 _tmp48_->vapi_directories = _tmp50_;
874 _tmp48_->vapi_directories_length1 = _tmp50__length1;
875 _tmp51_ = settings;
876 _tmp52_ = vala_doc_metadata_directories;
877 _tmp52__length1 = _vala_array_length (vala_doc_metadata_directories);
878 _tmp53_ = (_tmp52_ != NULL) ? _vala_array_dup3 (_tmp52_, _tmp52__length1) : _tmp52_;
879 _tmp53__length1 = _tmp52__length1;
880 _tmp51_->metadata_directories = (_vala_array_free (_tmp51_->metadata_directories, _tmp51_->metadata_directories_length1, (GDestroyNotify) g_free), NULL);
881 _tmp51_->metadata_directories = _tmp53_;
882 _tmp51_->metadata_directories_length1 = _tmp53__length1;
883 _tmp54_ = settings;
884 _tmp55_ = vala_doc_gir_directories;
885 _tmp55__length1 = _vala_array_length (vala_doc_gir_directories);
886 _tmp56_ = (_tmp55_ != NULL) ? _vala_array_dup4 (_tmp55_, _tmp55__length1) : _tmp55_;
887 _tmp56__length1 = _tmp55__length1;
888 _tmp54_->gir_directories = (_vala_array_free (_tmp54_->gir_directories, _tmp54_->gir_directories_length1, (GDestroyNotify) g_free), NULL);
889 _tmp54_->gir_directories = _tmp56_;
890 _tmp54_->gir_directories_length1 = _tmp56__length1;
891 _tmp57_ = settings;
892 _tmp58_ = vala_doc_target_glib;
893 _tmp59_ = g_strdup (_tmp58_);
894 _g_free0 (_tmp57_->target_glib);
895 _tmp57_->target_glib = _tmp59_;
896 _tmp60_ = settings;
897 _tmp60_->use_svg_images = vala_doc_use_svg_images;
898 _tmp61_ = settings;
899 _tmp62_ = vala_doc_tsources;
900 _tmp62__length1 = _vala_array_length (vala_doc_tsources);
901 _tmp63_ = (_tmp62_ != NULL) ? _vala_array_dup5 (_tmp62_, _tmp62__length1) : _tmp62_;
902 _tmp63__length1 = _tmp62__length1;
903 _tmp61_->source_files = (_vala_array_free (_tmp61_->source_files, _tmp61_->source_files_length1, (GDestroyNotify) g_free), NULL);
904 _tmp61_->source_files = _tmp63_;
905 _tmp61_->source_files_length1 = _tmp63__length1;
906 _tmp64_ = settings;
907 _tmp65_ = vala_doc_packages;
908 _tmp65__length1 = _vala_array_length (vala_doc_packages);
909 _tmp66_ = (_tmp65_ != NULL) ? _vala_array_dup6 (_tmp65_, _tmp65__length1) : _tmp65_;
910 _tmp66__length1 = _tmp65__length1;
911 _tmp64_->packages = (_vala_array_free (_tmp64_->packages, _tmp64_->packages_length1, (GDestroyNotify) g_free), NULL);
912 _tmp64_->packages = _tmp66_;
913 _tmp64_->packages_length1 = _tmp66__length1;
914 _tmp67_ = settings;
915 _tmp68_ = vala_doc_profile;
916 _tmp69_ = g_strdup (_tmp68_);
917 _g_free0 (_tmp67_->profile);
918 _tmp67_->profile = _tmp69_;
919 _tmp70_ = settings;
920 _tmp71_ = vala_doc_defines;
921 _tmp71__length1 = _vala_array_length (vala_doc_defines);
922 _tmp72_ = (_tmp71_ != NULL) ? _vala_array_dup7 (_tmp71_, _tmp71__length1) : _tmp71_;
923 _tmp72__length1 = _tmp71__length1;
924 _tmp70_->defines = (_vala_array_free (_tmp70_->defines, _tmp70_->defines_length1, (GDestroyNotify) g_free), NULL);
925 _tmp70_->defines = _tmp72_;
926 _tmp70_->defines_length1 = _tmp72__length1;
927 _tmp73_ = settings;
928 _tmp74_ = vala_doc_alternative_resource_dirs;
929 _tmp74__length1 = _vala_array_length (vala_doc_alternative_resource_dirs);
930 _tmp75_ = (_tmp74_ != NULL) ? _vala_array_dup8 (_tmp74_, _tmp74__length1) : _tmp74_;
931 _tmp75__length1 = _tmp74__length1;
932 _tmp73_->alternative_resource_dirs = (_vala_array_free (_tmp73_->alternative_resource_dirs, _tmp73_->alternative_resource_dirs_length1, (GDestroyNotify) g_free), NULL);
933 _tmp73_->alternative_resource_dirs = _tmp75_;
934 _tmp73_->alternative_resource_dirs_length1 = _tmp75__length1;
935 _tmp76_ = vala_code_context_new ();
936 context = _tmp76_;
937 _tmp77_ = context;
938 vala_code_context_push (_tmp77_);
939 doclet = NULL;
940 _tmp79_ = vala_doc_create_module_loader (self, reporter, &_tmp78_);
941 _g_object_unref0 (doclet);
942 doclet = _tmp78_;
943 modules = _tmp79_;
944 _tmp81_ = valadoc_error_reporter_get_errors (reporter);
945 _tmp82_ = _tmp81_;
946 if (_tmp82_ > 0) {
947 _tmp80_ = TRUE;
948 } else {
949 ValadocModuleLoader* _tmp83_;
950 _tmp83_ = modules;
951 _tmp80_ = _tmp83_ == NULL;
952 }
953 if (_tmp80_) {
954 result = vala_doc_quit (reporter, TRUE);
955 _g_object_unref0 (modules);
956 _g_object_unref0 (doclet);
957 _vala_code_context_unref0 (context);
958 _g_object_unref0 (settings);
959 return result;
960 }
961 _tmp84_ = valadoc_tree_builder_new ();
962 builder = _tmp84_;
963 _tmp85_ = builder;
964 _tmp86_ = settings;
965 _tmp87_ = valadoc_tree_builder_build (_tmp85_, _tmp86_, reporter);
966 doctree = _tmp87_;
967 _tmp88_ = valadoc_error_reporter_get_errors (reporter);
968 _tmp89_ = _tmp88_;
969 if (_tmp89_ > 0) {
970 _g_object_unref0 (doclet);
971 doclet = NULL;
972 result = vala_doc_quit (reporter, TRUE);
973 _valadoc_api_tree_unref0 (doctree);
974 _vala_code_visitor_unref0 (builder);
975 _g_object_unref0 (modules);
976 _g_object_unref0 (doclet);
977 _vala_code_context_unref0 (context);
978 _g_object_unref0 (settings);
979 return result;
980 }
981 _tmp90_ = builder;
982 _tmp91_ = valadoc_symbol_resolver_new (_tmp90_);
983 resolver = _tmp91_;
984 _tmp92_ = doctree;
985 _tmp93_ = resolver;
986 valadoc_api_tree_accept (_tmp92_, (ValadocApiVisitor*) _tmp93_);
987 _tmp94_ = valadoc_api_child_symbol_registrar_new ();
988 registrar = _tmp94_;
989 _tmp95_ = doctree;
990 _tmp96_ = registrar;
991 valadoc_api_tree_accept (_tmp95_, (ValadocApiVisitor*) _tmp96_);
992 _tmp97_ = settings;
993 _tmp98_ = doctree;
994 _tmp99_ = modules;
995 _tmp100_ = valadoc_documentation_parser_new (_tmp97_, reporter, _tmp98_, _tmp99_);
996 docparser = _tmp100_;
997 _tmp101_ = doctree;
998 if (!valadoc_api_tree_create_tree (_tmp101_)) {
999 result = vala_doc_quit (reporter, TRUE);
1000 _g_object_unref0 (docparser);
1001 _g_object_unref0 (registrar);
1002 _g_object_unref0 (resolver);
1003 _valadoc_api_tree_unref0 (doctree);
1004 _vala_code_visitor_unref0 (builder);
1005 _g_object_unref0 (modules);
1006 _g_object_unref0 (doclet);
1007 _vala_code_context_unref0 (context);
1008 _g_object_unref0 (settings);
1009 return result;
1010 }
1011 _tmp102_ = doctree;
1012 _tmp103_ = docparser;
1013 _tmp104_ = modules;
1014 _tmp105_ = settings;
1015 _tmp106_ = valadoc_importer_valadoc_documentation_importer_new (_tmp102_, _tmp103_, _tmp104_, _tmp105_, reporter);
1016 _tmp107_ = doctree;
1017 _tmp108_ = docparser;
1018 _tmp109_ = modules;
1019 _tmp110_ = settings;
1020 _tmp111_ = valadoc_importer_gir_documentation_importer_new (_tmp107_, _tmp108_, _tmp109_, _tmp110_, reporter);
1021 _tmp112_ = g_new0 (ValadocImporterDocumentationImporter*, 2 + 1);
1022 _tmp112_[0] = (ValadocImporterDocumentationImporter*) _tmp106_;
1023 _tmp112_[1] = (ValadocImporterDocumentationImporter*) _tmp111_;
1024 importers = _tmp112_;
1025 importers_length1 = 2;
1026 _importers_size_ = importers_length1;
1027 _tmp113_ = doctree;
1028 _tmp114_ = docparser;
1029 valadoc_api_tree_parse_comments (_tmp113_, _tmp114_);
1030 _tmp115_ = valadoc_error_reporter_get_errors (reporter);
1031 _tmp116_ = _tmp115_;
1032 if (_tmp116_ > 0) {
1033 result = vala_doc_quit (reporter, TRUE);
1034 importers = (_vala_array_free (importers, importers_length1, (GDestroyNotify) g_object_unref), NULL);
1035 _g_object_unref0 (docparser);
1036 _g_object_unref0 (registrar);
1037 _g_object_unref0 (resolver);
1038 _valadoc_api_tree_unref0 (doctree);
1039 _vala_code_visitor_unref0 (builder);
1040 _g_object_unref0 (modules);
1041 _g_object_unref0 (doclet);
1042 _vala_code_context_unref0 (context);
1043 _g_object_unref0 (settings);
1044 return result;
1045 }
1046 _tmp117_ = doctree;
1047 _tmp118_ = importers;
1048 _tmp118__length1 = importers_length1;
1049 _tmp119_ = vala_doc_import_packages;
1050 _tmp119__length1 = _vala_array_length (vala_doc_import_packages);
1051 _tmp120_ = vala_doc_import_directories;
1052 _tmp120__length1 = _vala_array_length (vala_doc_import_directories);
1053 valadoc_api_tree_import_comments (_tmp117_, _tmp118_, (gint) _tmp118__length1, _tmp119_, (gint) _tmp119__length1, _tmp120_, (gint) _tmp120__length1);
1054 _tmp121_ = valadoc_error_reporter_get_errors (reporter);
1055 _tmp122_ = _tmp121_;
1056 if (_tmp122_ > 0) {
1057 result = vala_doc_quit (reporter, TRUE);
1058 importers = (_vala_array_free (importers, importers_length1, (GDestroyNotify) g_object_unref), NULL);
1059 _g_object_unref0 (docparser);
1060 _g_object_unref0 (registrar);
1061 _g_object_unref0 (resolver);
1062 _valadoc_api_tree_unref0 (doctree);
1063 _vala_code_visitor_unref0 (builder);
1064 _g_object_unref0 (modules);
1065 _g_object_unref0 (doclet);
1066 _vala_code_context_unref0 (context);
1067 _g_object_unref0 (settings);
1068 return result;
1069 }
1070 _tmp123_ = doctree;
1071 _tmp124_ = docparser;
1072 valadoc_api_tree_check_comments (_tmp123_, _tmp124_);
1073 _tmp125_ = valadoc_error_reporter_get_errors (reporter);
1074 _tmp126_ = _tmp125_;
1075 if (_tmp126_ > 0) {
1076 result = vala_doc_quit (reporter, TRUE);
1077 importers = (_vala_array_free (importers, importers_length1, (GDestroyNotify) g_object_unref), NULL);
1078 _g_object_unref0 (docparser);
1079 _g_object_unref0 (registrar);
1080 _g_object_unref0 (resolver);
1081 _valadoc_api_tree_unref0 (doctree);
1082 _vala_code_visitor_unref0 (builder);
1083 _g_object_unref0 (modules);
1084 _g_object_unref0 (doclet);
1085 _vala_code_context_unref0 (context);
1086 _g_object_unref0 (settings);
1087 return result;
1088 }
1089 _tmp127_ = vala_doc_gir_name;
1090 if (_tmp127_ != NULL) {
1091 ValadocGirWriter* gir_writer = NULL;
1092 ValadocSymbolResolver* _tmp128_;
1093 ValadocGirWriter* _tmp129_;
1094 ValadocGirWriter* _tmp130_;
1095 ValadocApiTree* _tmp131_;
1096 ValaCodeContext* _tmp132_;
1097 ValaCodeContext* _tmp133_;
1098 ValadocSettings* _tmp134_;
1099 const gchar* _tmp135_;
1100 ValadocSettings* _tmp136_;
1101 const gchar* _tmp137_;
1102 ValadocSettings* _tmp138_;
1103 const gchar* _tmp139_;
1104 gchar* _tmp140_;
1105 gchar* _tmp141_;
1106 ValadocSettings* _tmp142_;
1107 const gchar* _tmp143_;
1108 ValadocSettings* _tmp144_;
1109 const gchar* _tmp145_;
1110 ValadocSettings* _tmp146_;
1111 const gchar* _tmp147_;
1112 gint _tmp148_;
1113 gint _tmp149_;
1114 _tmp128_ = resolver;
1115 _tmp129_ = valadoc_gir_writer_new (_tmp128_);
1116 gir_writer = _tmp129_;
1117 _tmp130_ = gir_writer;
1118 _tmp131_ = doctree;
1119 _tmp132_ = valadoc_api_tree_get_context (_tmp131_);
1120 _tmp133_ = _tmp132_;
1121 _tmp134_ = settings;
1122 _tmp135_ = _tmp134_->gir_directory;
1123 _tmp136_ = settings;
1124 _tmp137_ = _tmp136_->gir_namespace;
1125 _tmp138_ = settings;
1126 _tmp139_ = _tmp138_->gir_version;
1127 _tmp140_ = g_strdup_printf ("%s-%s.gir", _tmp137_, _tmp139_);
1128 _tmp141_ = _tmp140_;
1129 _tmp142_ = settings;
1130 _tmp143_ = _tmp142_->gir_namespace;
1131 _tmp144_ = settings;
1132 _tmp145_ = _tmp144_->gir_version;
1133 _tmp146_ = settings;
1134 _tmp147_ = _tmp146_->pkg_name;
1135 vala_gir_writer_write_file ((ValaGIRWriter*) _tmp130_, _tmp133_, _tmp135_, _tmp141_, _tmp143_, _tmp145_, _tmp147_, NULL);
1136 _g_free0 (_tmp141_);
1137 _tmp148_ = valadoc_error_reporter_get_errors (reporter);
1138 _tmp149_ = _tmp148_;
1139 if (_tmp149_ > 0) {
1140 result = vala_doc_quit (reporter, TRUE);
1141 _vala_code_visitor_unref0 (gir_writer);
1142 importers = (_vala_array_free (importers, importers_length1, (GDestroyNotify) g_object_unref), NULL);
1143 _g_object_unref0 (docparser);
1144 _g_object_unref0 (registrar);
1145 _g_object_unref0 (resolver);
1146 _valadoc_api_tree_unref0 (doctree);
1147 _vala_code_visitor_unref0 (builder);
1148 _g_object_unref0 (modules);
1149 _g_object_unref0 (doclet);
1150 _vala_code_context_unref0 (context);
1151 _g_object_unref0 (settings);
1152 return result;
1153 }
1154 _vala_code_visitor_unref0 (gir_writer);
1155 }
1156 _tmp150_ = doclet;
1157 _tmp151_ = settings;
1158 _tmp152_ = doctree;
1159 valadoc_doclet_process (_tmp150_, _tmp151_, _tmp152_, reporter);
1160 result = vala_doc_quit (reporter, TRUE);
1161 importers = (_vala_array_free (importers, importers_length1, (GDestroyNotify) g_object_unref), NULL);
1162 _g_object_unref0 (docparser);
1163 _g_object_unref0 (registrar);
1164 _g_object_unref0 (resolver);
1165 _valadoc_api_tree_unref0 (doctree);
1166 _vala_code_visitor_unref0 (builder);
1167 _g_object_unref0 (modules);
1168 _g_object_unref0 (doclet);
1169 _vala_code_context_unref0 (context);
1170 _g_object_unref0 (settings);
1171 return result;
1172 }
1173
1174 static gint
string_last_index_of_char(const gchar * self,gunichar c,gint start_index)1175 string_last_index_of_char (const gchar* self,
1176 gunichar c,
1177 gint start_index)
1178 {
1179 gchar* _result_ = NULL;
1180 gchar* _tmp0_;
1181 gchar* _tmp1_;
1182 gint result = 0;
1183 g_return_val_if_fail (self != NULL, 0);
1184 _tmp0_ = g_utf8_strrchr (((gchar*) self) + start_index, (gssize) -1, c);
1185 _result_ = _tmp0_;
1186 _tmp1_ = _result_;
1187 if (_tmp1_ != NULL) {
1188 gchar* _tmp2_;
1189 _tmp2_ = _result_;
1190 result = (gint) (_tmp2_ - ((gchar*) self));
1191 return result;
1192 } else {
1193 result = -1;
1194 return result;
1195 }
1196 }
1197
1198 static glong
string_strnlen(gchar * str,glong maxlen)1199 string_strnlen (gchar* str,
1200 glong maxlen)
1201 {
1202 gchar* end = NULL;
1203 gchar* _tmp0_;
1204 gchar* _tmp1_;
1205 glong result = 0L;
1206 _tmp0_ = memchr (str, 0, (gsize) maxlen);
1207 end = _tmp0_;
1208 _tmp1_ = end;
1209 if (_tmp1_ == NULL) {
1210 result = maxlen;
1211 return result;
1212 } else {
1213 gchar* _tmp2_;
1214 _tmp2_ = end;
1215 result = (glong) (_tmp2_ - str);
1216 return result;
1217 }
1218 }
1219
1220 static gchar*
string_substring(const gchar * self,glong offset,glong len)1221 string_substring (const gchar* self,
1222 glong offset,
1223 glong len)
1224 {
1225 glong string_length = 0L;
1226 gboolean _tmp0_ = FALSE;
1227 gchar* _tmp3_;
1228 gchar* result = NULL;
1229 g_return_val_if_fail (self != NULL, NULL);
1230 if (offset >= ((glong) 0)) {
1231 _tmp0_ = len >= ((glong) 0);
1232 } else {
1233 _tmp0_ = FALSE;
1234 }
1235 if (_tmp0_) {
1236 string_length = string_strnlen ((gchar*) self, offset + len);
1237 } else {
1238 gint _tmp1_;
1239 gint _tmp2_;
1240 _tmp1_ = strlen (self);
1241 _tmp2_ = _tmp1_;
1242 string_length = (glong) _tmp2_;
1243 }
1244 if (offset < ((glong) 0)) {
1245 offset = string_length + offset;
1246 g_return_val_if_fail (offset >= ((glong) 0), NULL);
1247 } else {
1248 g_return_val_if_fail (offset <= string_length, NULL);
1249 }
1250 if (len < ((glong) 0)) {
1251 len = string_length - offset;
1252 }
1253 g_return_val_if_fail ((offset + len) <= string_length, NULL);
1254 _tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len);
1255 result = _tmp3_;
1256 return result;
1257 }
1258
1259 static gchar
string_get(const gchar * self,glong index)1260 string_get (const gchar* self,
1261 glong index)
1262 {
1263 gchar _tmp0_;
1264 gchar result = '\0';
1265 g_return_val_if_fail (self != NULL, '\0');
1266 _tmp0_ = ((gchar*) self)[index];
1267 result = _tmp0_;
1268 return result;
1269 }
1270
1271 static gboolean
string_contains(const gchar * self,const gchar * needle)1272 string_contains (const gchar* self,
1273 const gchar* needle)
1274 {
1275 gchar* _tmp0_;
1276 gboolean result = FALSE;
1277 g_return_val_if_fail (self != NULL, FALSE);
1278 g_return_val_if_fail (needle != NULL, FALSE);
1279 _tmp0_ = strstr ((gchar*) self, (gchar*) needle);
1280 result = _tmp0_ != NULL;
1281 return result;
1282 }
1283
1284 static gint
vala_doc_main(gchar ** args,gint args_length1)1285 vala_doc_main (gchar** args,
1286 gint args_length1)
1287 {
1288 ValadocErrorReporter* reporter = NULL;
1289 ValadocErrorReporter* _tmp0_;
1290 const gchar* _tmp19_;
1291 const gchar* _tmp24_;
1292 const gchar* _tmp30_;
1293 gchar** _tmp34_;
1294 gint _tmp34__length1;
1295 ValadocErrorReporter* _tmp41_;
1296 gint _tmp42_;
1297 gint _tmp43_;
1298 const gchar* _tmp45_;
1299 ValaDoc* valadoc = NULL;
1300 ValaDoc* _tmp77_;
1301 ValaDoc* _tmp78_;
1302 ValadocErrorReporter* _tmp79_;
1303 GError* _inner_error0_ = NULL;
1304 gint result = 0;
1305 setlocale (LC_ALL, "");
1306 _tmp0_ = valadoc_error_reporter_new (NULL);
1307 reporter = _tmp0_;
1308 {
1309 GOptionContext* opt_context = NULL;
1310 GOptionContext* _tmp1_;
1311 GOptionContext* _tmp2_;
1312 GOptionContext* _tmp3_;
1313 GOptionContext* _tmp4_;
1314 _tmp1_ = g_option_context_new ("- Vala Documentation Tool");
1315 opt_context = _tmp1_;
1316 _tmp2_ = opt_context;
1317 g_option_context_set_help_enabled (_tmp2_, TRUE);
1318 _tmp3_ = opt_context;
1319 g_option_context_add_main_entries (_tmp3_, VALA_DOC_options, NULL);
1320 _tmp4_ = opt_context;
1321 g_option_context_parse (_tmp4_, (gint*) (&args_length1), &args, &_inner_error0_);
1322 if (G_UNLIKELY (_inner_error0_ != NULL)) {
1323 gint _tmp5_ = -1;
1324 _g_option_context_free0 (opt_context);
1325 if (_inner_error0_->domain == G_OPTION_ERROR) {
1326 goto __catch0_g_option_error;
1327 }
1328 _g_object_unref0 (reporter);
1329 g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
1330 g_clear_error (&_inner_error0_);
1331 return _tmp5_;
1332 }
1333 _g_option_context_free0 (opt_context);
1334 }
1335 goto __finally0;
1336 __catch0_g_option_error:
1337 {
1338 GError* e = NULL;
1339 ValadocErrorReporter* _tmp6_;
1340 GError* _tmp7_;
1341 const gchar* _tmp8_;
1342 FILE* _tmp9_;
1343 const gchar* _tmp10_;
1344 ValadocErrorReporter* _tmp11_;
1345 e = _inner_error0_;
1346 _inner_error0_ = NULL;
1347 _tmp6_ = reporter;
1348 _tmp7_ = e;
1349 _tmp8_ = _tmp7_->message;
1350 valadoc_error_reporter_simple_error (_tmp6_, NULL, "%s", _tmp8_);
1351 _tmp9_ = stdout;
1352 _tmp10_ = args[0];
1353 fprintf (_tmp9_, "Run '%s --help' to see a full list of available command line options.\n", _tmp10_);
1354 _tmp11_ = reporter;
1355 result = vala_doc_quit (_tmp11_, FALSE);
1356 _g_error_free0 (e);
1357 _g_object_unref0 (reporter);
1358 return result;
1359 }
1360 __finally0:
1361 if (G_UNLIKELY (_inner_error0_ != NULL)) {
1362 gint _tmp12_ = -1;
1363 _g_object_unref0 (reporter);
1364 g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
1365 g_clear_error (&_inner_error0_);
1366 return _tmp12_;
1367 }
1368 if (vala_doc_disable_diagnostic_colors == FALSE) {
1369 const gchar* env_colors = NULL;
1370 const gchar* _tmp13_;
1371 const gchar* _tmp14_;
1372 _tmp13_ = g_getenv ("VALA_COLORS");
1373 env_colors = _tmp13_;
1374 _tmp14_ = env_colors;
1375 if (_tmp14_ != NULL) {
1376 ValadocErrorReporter* _tmp15_;
1377 const gchar* _tmp16_;
1378 _tmp15_ = reporter;
1379 _tmp16_ = env_colors;
1380 valadoc_error_reporter_set_colors (_tmp15_, _tmp16_);
1381 } else {
1382 ValadocErrorReporter* _tmp17_;
1383 _tmp17_ = reporter;
1384 valadoc_error_reporter_set_colors (_tmp17_, VALA_DOC_DEFAULT_COLORS);
1385 }
1386 }
1387 if (vala_doc_version) {
1388 FILE* _tmp18_;
1389 _tmp18_ = stdout;
1390 fprintf (_tmp18_, "Valadoc %s\n", VALA_BUILD_VERSION);
1391 result = 0;
1392 _g_object_unref0 (reporter);
1393 return result;
1394 }
1395 _tmp19_ = vala_doc_directory;
1396 if (_tmp19_ == NULL) {
1397 ValadocErrorReporter* _tmp20_;
1398 ValadocErrorReporter* _tmp21_;
1399 _tmp20_ = reporter;
1400 valadoc_error_reporter_simple_error (_tmp20_, NULL, "No output directory specified.");
1401 _tmp21_ = reporter;
1402 result = vala_doc_quit (_tmp21_, FALSE);
1403 _g_object_unref0 (reporter);
1404 return result;
1405 }
1406 if (!vala_doc_check_pkg_name ()) {
1407 ValadocErrorReporter* _tmp22_;
1408 ValadocErrorReporter* _tmp23_;
1409 _tmp22_ = reporter;
1410 valadoc_error_reporter_simple_error (_tmp22_, NULL, "File already exists");
1411 _tmp23_ = reporter;
1412 result = vala_doc_quit (_tmp23_, FALSE);
1413 _g_object_unref0 (reporter);
1414 return result;
1415 }
1416 _tmp24_ = vala_doc_directory;
1417 if (g_file_test (_tmp24_, G_FILE_TEST_EXISTS)) {
1418 if (vala_doc_force == TRUE) {
1419 gboolean tmp = FALSE;
1420 const gchar* _tmp25_;
1421 _tmp25_ = vala_doc_directory;
1422 tmp = valadoc_remove_directory (_tmp25_);
1423 if (tmp == FALSE) {
1424 ValadocErrorReporter* _tmp26_;
1425 ValadocErrorReporter* _tmp27_;
1426 _tmp26_ = reporter;
1427 valadoc_error_reporter_simple_error (_tmp26_, NULL, "Can't remove directory.");
1428 _tmp27_ = reporter;
1429 result = vala_doc_quit (_tmp27_, FALSE);
1430 _g_object_unref0 (reporter);
1431 return result;
1432 }
1433 } else {
1434 ValadocErrorReporter* _tmp28_;
1435 ValadocErrorReporter* _tmp29_;
1436 _tmp28_ = reporter;
1437 valadoc_error_reporter_simple_error (_tmp28_, NULL, "File already exists");
1438 _tmp29_ = reporter;
1439 result = vala_doc_quit (_tmp29_, FALSE);
1440 _g_object_unref0 (reporter);
1441 return result;
1442 }
1443 }
1444 _tmp30_ = vala_doc_wikidirectory;
1445 if (_tmp30_ != NULL) {
1446 const gchar* _tmp31_;
1447 _tmp31_ = vala_doc_wikidirectory;
1448 if (!g_file_test (_tmp31_, G_FILE_TEST_IS_DIR)) {
1449 ValadocErrorReporter* _tmp32_;
1450 ValadocErrorReporter* _tmp33_;
1451 _tmp32_ = reporter;
1452 valadoc_error_reporter_simple_error (_tmp32_, NULL, "Wiki-directory does not exist.");
1453 _tmp33_ = reporter;
1454 result = vala_doc_quit (_tmp33_, FALSE);
1455 _g_object_unref0 (reporter);
1456 return result;
1457 }
1458 }
1459 _tmp34_ = vala_doc_alternative_resource_dirs;
1460 _tmp34__length1 = _vala_array_length (vala_doc_alternative_resource_dirs);
1461 {
1462 gchar** dir_collection = NULL;
1463 gint dir_collection_length1 = 0;
1464 gint _dir_collection_size_ = 0;
1465 gint dir_it = 0;
1466 dir_collection = _tmp34_;
1467 dir_collection_length1 = _tmp34__length1;
1468 for (dir_it = 0; dir_it < dir_collection_length1; dir_it = dir_it + 1) {
1469 const gchar* dir = NULL;
1470 dir = dir_collection[dir_it];
1471 {
1472 const gchar* _tmp35_;
1473 _tmp35_ = dir;
1474 if (!g_file_test (_tmp35_, G_FILE_TEST_IS_DIR)) {
1475 ValadocErrorReporter* _tmp36_;
1476 const gchar* _tmp37_;
1477 gchar* _tmp38_;
1478 gchar* _tmp39_;
1479 ValadocErrorReporter* _tmp40_;
1480 _tmp36_ = reporter;
1481 _tmp37_ = dir;
1482 _tmp38_ = g_strdup_printf ("alternative resource directory '%s' does not exist.", _tmp37_);
1483 _tmp39_ = _tmp38_;
1484 valadoc_error_reporter_simple_error (_tmp36_, NULL, "%s", _tmp39_);
1485 _g_free0 (_tmp39_);
1486 _tmp40_ = reporter;
1487 result = vala_doc_quit (_tmp40_, FALSE);
1488 _g_object_unref0 (reporter);
1489 return result;
1490 }
1491 }
1492 }
1493 }
1494 _tmp41_ = reporter;
1495 _tmp42_ = valadoc_error_reporter_get_errors (_tmp41_);
1496 _tmp43_ = _tmp42_;
1497 if (_tmp43_ > 0) {
1498 ValadocErrorReporter* _tmp44_;
1499 _tmp44_ = reporter;
1500 result = vala_doc_quit (_tmp44_, FALSE);
1501 _g_object_unref0 (reporter);
1502 return result;
1503 }
1504 _tmp45_ = vala_doc_gir_name;
1505 if (_tmp45_ != NULL) {
1506 glong gir_len = 0L;
1507 const gchar* _tmp46_;
1508 gint _tmp47_;
1509 gint _tmp48_;
1510 gint last_hyphen = 0;
1511 const gchar* _tmp49_;
1512 gboolean _tmp50_ = FALSE;
1513 const gchar* _tmp55_;
1514 gchar* _tmp56_;
1515 const gchar* _tmp57_;
1516 gchar* _tmp58_;
1517 const gchar* _tmp59_;
1518 gboolean _tmp60_ = FALSE;
1519 gboolean _tmp61_ = FALSE;
1520 gboolean _tmp62_ = FALSE;
1521 const gchar* _tmp63_;
1522 gboolean report_warning = FALSE;
1523 gchar** _tmp70_;
1524 gint _tmp70__length1;
1525 _tmp46_ = vala_doc_gir_name;
1526 _tmp47_ = strlen (_tmp46_);
1527 _tmp48_ = _tmp47_;
1528 gir_len = (glong) _tmp48_;
1529 _tmp49_ = vala_doc_gir_name;
1530 last_hyphen = string_last_index_of_char (_tmp49_, (gunichar) '-', 0);
1531 if (last_hyphen == -1) {
1532 _tmp50_ = TRUE;
1533 } else {
1534 const gchar* _tmp51_;
1535 _tmp51_ = vala_doc_gir_name;
1536 _tmp50_ = !g_str_has_suffix (_tmp51_, ".gir");
1537 }
1538 if (_tmp50_) {
1539 ValadocErrorReporter* _tmp52_;
1540 const gchar* _tmp53_;
1541 ValadocErrorReporter* _tmp54_;
1542 _tmp52_ = reporter;
1543 _tmp53_ = vala_doc_gir_name;
1544 valadoc_error_reporter_simple_error (_tmp52_, NULL, "GIR file name '%s' is not well-formed, expected NAME-VERSION.gir", _tmp53_);
1545 _tmp54_ = reporter;
1546 result = vala_doc_quit (_tmp54_, FALSE);
1547 _g_object_unref0 (reporter);
1548 return result;
1549 }
1550 _tmp55_ = vala_doc_gir_name;
1551 _tmp56_ = string_substring (_tmp55_, (glong) 0, (glong) last_hyphen);
1552 _g_free0 (vala_doc_gir_namespace);
1553 vala_doc_gir_namespace = _tmp56_;
1554 _tmp57_ = vala_doc_gir_name;
1555 _tmp58_ = string_substring (_tmp57_, (glong) (last_hyphen + 1), (gir_len - last_hyphen) - 5);
1556 _g_free0 (vala_doc_gir_version);
1557 vala_doc_gir_version = _tmp58_;
1558 _tmp59_ = vala_doc_gir_version;
1559 g_strcanon (_tmp59_, "0123456789.", '?');
1560 _tmp63_ = vala_doc_gir_namespace;
1561 if (g_strcmp0 (_tmp63_, "") == 0) {
1562 _tmp62_ = TRUE;
1563 } else {
1564 const gchar* _tmp64_;
1565 _tmp64_ = vala_doc_gir_version;
1566 _tmp62_ = g_strcmp0 (_tmp64_, "") == 0;
1567 }
1568 if (_tmp62_) {
1569 _tmp61_ = TRUE;
1570 } else {
1571 const gchar* _tmp65_;
1572 _tmp65_ = vala_doc_gir_version;
1573 _tmp61_ = !g_ascii_isdigit (string_get (_tmp65_, (glong) 0));
1574 }
1575 if (_tmp61_) {
1576 _tmp60_ = TRUE;
1577 } else {
1578 const gchar* _tmp66_;
1579 _tmp66_ = vala_doc_gir_version;
1580 _tmp60_ = string_contains (_tmp66_, "?");
1581 }
1582 if (_tmp60_) {
1583 ValadocErrorReporter* _tmp67_;
1584 const gchar* _tmp68_;
1585 ValadocErrorReporter* _tmp69_;
1586 _tmp67_ = reporter;
1587 _tmp68_ = vala_doc_gir_name;
1588 valadoc_error_reporter_simple_error (_tmp67_, NULL, "GIR file name '%s' is not well-formed, expected NAME-VERSION.gir", _tmp68_);
1589 _tmp69_ = reporter;
1590 result = vala_doc_quit (_tmp69_, FALSE);
1591 _g_object_unref0 (reporter);
1592 return result;
1593 }
1594 report_warning = TRUE;
1595 _tmp70_ = vala_doc_tsources;
1596 _tmp70__length1 = _vala_array_length (vala_doc_tsources);
1597 {
1598 gchar** source_collection = NULL;
1599 gint source_collection_length1 = 0;
1600 gint _source_collection_size_ = 0;
1601 gint source_it = 0;
1602 source_collection = _tmp70_;
1603 source_collection_length1 = _tmp70__length1;
1604 for (source_it = 0; source_it < source_collection_length1; source_it = source_it + 1) {
1605 gchar* _tmp71_;
1606 gchar* source = NULL;
1607 _tmp71_ = g_strdup (source_collection[source_it]);
1608 source = _tmp71_;
1609 {
1610 gboolean _tmp72_ = FALSE;
1611 const gchar* _tmp73_;
1612 _tmp73_ = source;
1613 if (g_str_has_suffix (_tmp73_, ".vala")) {
1614 _tmp72_ = TRUE;
1615 } else {
1616 const gchar* _tmp74_;
1617 _tmp74_ = source;
1618 _tmp72_ = g_str_has_suffix (_tmp74_, ".gs");
1619 }
1620 if (_tmp72_) {
1621 report_warning = FALSE;
1622 _g_free0 (source);
1623 break;
1624 }
1625 _g_free0 (source);
1626 }
1627 }
1628 }
1629 if (report_warning == TRUE) {
1630 ValadocErrorReporter* _tmp75_;
1631 ValadocErrorReporter* _tmp76_;
1632 _tmp75_ = reporter;
1633 valadoc_error_reporter_simple_error (_tmp75_, NULL, "No source file specified to be compiled to gir.");
1634 _tmp76_ = reporter;
1635 result = vala_doc_quit (_tmp76_, FALSE);
1636 _g_object_unref0 (reporter);
1637 return result;
1638 }
1639 }
1640 _tmp77_ = vala_doc_new ();
1641 valadoc = _tmp77_;
1642 _tmp78_ = valadoc;
1643 _tmp79_ = reporter;
1644 result = vala_doc_run (_tmp78_, _tmp79_);
1645 _g_object_unref0 (valadoc);
1646 _g_object_unref0 (reporter);
1647 return result;
1648 }
1649
1650 int
main(int argc,char ** argv)1651 main (int argc,
1652 char ** argv)
1653 {
1654 return vala_doc_main (argv, argc);
1655 }
1656
1657 ValaDoc*
vala_doc_construct(GType object_type)1658 vala_doc_construct (GType object_type)
1659 {
1660 ValaDoc * self = NULL;
1661 self = (ValaDoc*) g_object_new (object_type, NULL);
1662 return self;
1663 }
1664
1665 ValaDoc*
vala_doc_new(void)1666 vala_doc_new (void)
1667 {
1668 return vala_doc_construct (TYPE_VALA_DOC);
1669 }
1670
1671 static void
vala_doc_class_init(ValaDocClass * klass,gpointer klass_data)1672 vala_doc_class_init (ValaDocClass * klass,
1673 gpointer klass_data)
1674 {
1675 vala_doc_parent_class = g_type_class_peek_parent (klass);
1676 G_OBJECT_CLASS (klass)->finalize = vala_doc_finalize;
1677 }
1678
1679 static void
vala_doc_instance_init(ValaDoc * self,gpointer klass)1680 vala_doc_instance_init (ValaDoc * self,
1681 gpointer klass)
1682 {
1683 }
1684
1685 static void
vala_doc_finalize(GObject * obj)1686 vala_doc_finalize (GObject * obj)
1687 {
1688 ValaDoc * self;
1689 self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_VALA_DOC, ValaDoc);
1690 G_OBJECT_CLASS (vala_doc_parent_class)->finalize (obj);
1691 }
1692
1693 static GType
vala_doc_get_type_once(void)1694 vala_doc_get_type_once (void)
1695 {
1696 static const GTypeInfo g_define_type_info = { sizeof (ValaDocClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_doc_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaDoc), 0, (GInstanceInitFunc) vala_doc_instance_init, NULL };
1697 GType vala_doc_type_id;
1698 vala_doc_type_id = g_type_register_static (G_TYPE_OBJECT, "ValaDoc", &g_define_type_info, 0);
1699 return vala_doc_type_id;
1700 }
1701
1702 GType
vala_doc_get_type(void)1703 vala_doc_get_type (void)
1704 {
1705 static volatile gsize vala_doc_type_id__volatile = 0;
1706 if (g_once_init_enter (&vala_doc_type_id__volatile)) {
1707 GType vala_doc_type_id;
1708 vala_doc_type_id = vala_doc_get_type_once ();
1709 g_once_init_leave (&vala_doc_type_id__volatile, vala_doc_type_id);
1710 }
1711 return vala_doc_type_id__volatile;
1712 }
1713
1714 static void
_vala_array_destroy(gpointer array,gint array_length,GDestroyNotify destroy_func)1715 _vala_array_destroy (gpointer array,
1716 gint array_length,
1717 GDestroyNotify destroy_func)
1718 {
1719 if ((array != NULL) && (destroy_func != NULL)) {
1720 gint i;
1721 for (i = 0; i < array_length; i = i + 1) {
1722 if (((gpointer*) array)[i] != NULL) {
1723 destroy_func (((gpointer*) array)[i]);
1724 }
1725 }
1726 }
1727 }
1728
1729 static void
_vala_array_free(gpointer array,gint array_length,GDestroyNotify destroy_func)1730 _vala_array_free (gpointer array,
1731 gint array_length,
1732 GDestroyNotify destroy_func)
1733 {
1734 _vala_array_destroy (array, array_length, destroy_func);
1735 g_free (array);
1736 }
1737
1738 static gint
_vala_array_length(gpointer array)1739 _vala_array_length (gpointer array)
1740 {
1741 gint length;
1742 length = 0;
1743 if (array) {
1744 while (((gpointer*) array)[length]) {
1745 length++;
1746 }
1747 }
1748 return length;
1749 }
1750
1751