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