Commit Graph

26 Commits

Author SHA1 Message Date
Colin Walters
da9249d559 Fix type parsing for both GLib case and GLib.List
* girepository/girparser.c: Rewrite type parsing
	to handle both GLib parsing case as well as correctly
	handling GLib.List and friends.  Don't try to treat
	e.g. ListStore as a List.

svn path=/trunk/; revision=527
2008-08-29 19:33:09 +00:00
Colin Walters
a633e4b1f3 Correctly handle GLib.List, GLib.Error etc
* girepository/girparser.c: Accept both List (for
	compiling GLib) and GLib.List (what the scanner
	generates).
	* tests/ - Update.
	* tools/generate.c: Generate canonical form.

svn path=/trunk/; revision=522
2008-08-29 18:19:26 +00:00
Colin Walters
b31a2ae395 Fix --includedir handling
* tests/scanner/Makefile.am: Pass the right
	--includedir args.  Add a Makefile dep.
	* tools/compiler.c: Pass includedirs down.
	* girepository/girparser.c: Actually put
	includedirs in context, pass down.  Fix
	locate_gir.

svn path=/trunk/; revision=514
2008-08-28 22:13:00 +00:00
Colin Walters
7fd9cd094d Expand aliases when generating typelibs
* gir/Makefile.am: Use --includedir
	* girepository/girparser.c: Recursively parse
	includes to pull in aliases and expand them.
	We need this to	avoid putting unknown names in
	the typelibs.
	* tools/compiler.c: Add --includedir option.

svn path=/trunk/; revision=512
2008-08-28 21:19:22 +00:00
Tor Lillqvist
2bb80a1209 Make g-ir-scanner work on Windows. Still problems with the typelib code.
2008-08-27  Tor Lillqvist  <tml@novell.com>

	Make g-ir-scanner work on Windows. Still problems with the typelib
	code. Changes okayed by jdahlin.

	* configure.ac: Check for Windows, set Automake conditional
	OS_WIN32. Change backslashes to forward slashes in pyexecdir to
	avoid shell quoting issues
	
	* girepository/Makefile.am: Use -no-undefined so that libtool
	agrees to build a shared library on Windows.

	* girepository/girparser.c (backtrace_stderr): No backtrace() on
	Windows. Empty implementation on Windows so far.

	* girepository/gtypelib.c (g_typelib_check_sanity): Give more
	informative error message for the assertion failures. Tell also
	what the expected size of the struct is. Check all sizes first and
	fail afterwards if at least one size was different from expected.

	* tools/Makefile.am: Reorder libraries into proper logical
	dependency order.

	* tools/generate.c: Don't include <dlfcn.h>, not used.

	* giscanner/Makefile.am: On Windows, link with the Python library,
	and install the module DLL as _giscanner.pyd. Remove the
	unnecessary import library and libtool library that libtool has
	installed.

	* giscanner/scannerlexer.l: Recognize the gcc __attribute__ syntax
	and just skip it. Recognize also two "l" suffixes for long long
	constants. Recognize also __inline__.

	* giscanner/grealpath.h (g_realpath): Implement on Windows, using
	GetFullPathName(). As such, GetFullPathName() does more than the
	UNIX realpath(). It also changes relative paths into absolute
	paths. But for our purposes that shouldn't matter.

	* giscanner/giscannermodule.c (pygi_source_scanner_parse_file): On
	Windows the file descriptor passed to us is from Python. Python
	Python2.5 uses the msvcr71.dll C library, while mingw-built code
	uses msvcrt.dll. On Windows, file descriptors are specific to
	which C library is used. So we must find out what underlying OS
	handle corresponds to the file descriptor Python passes us, and
	then make that into a file descriptor valid for the C library this
	code uses.

	* giscanner/sourcescanner.py (_parse): Don't need to bypass
	__attribute__ as the lexer now handles it. The definition as empty
	was ineffective for mingw anyway, as mingw's _mingw.h undefines
	__attribute__. Close the temp file before unlinking it.

	* giscanner/cgobject.py: Use correct library name for the gobject
	DLL on Windows.

	* gir/Makefile.am: Must pass the full basename of the DLLs on
	Windows to g-ir-scanner. It's a bit ugly that we have to "know"
	that the names of the GLib DLLs are like libglib-2.0-0.dll, but in
	reality they won't change, until there is a GLib 3, and then also
	the Unix code here needs changing.

	Must pass CPPFLAGS to g-ir-scanner when building GLib.gir so that
	libintl.h is found.


svn path=/trunk/; revision=503
2008-08-27 13:33:21 +00:00
Colin Walters
777cc726a4 Parse new implements syntax, drop gapi one. Update. Generate new syntax.
2008-08-25  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c: Parse new implements
	syntax, drop gapi one.
	* tests/object.gir: Update.
	* tools/generate.c: Generate new syntax.

svn path=/trunk/; revision=492
2008-08-25 15:22:39 +00:00
Johan Dahlin
ed13aae5f2 Refactor a couple of parsing functions to be simpler to follow. Avoid huge
2008-08-24  Johan Dahlin  <johan@gnome.org>

    * girepository/girparser.c (start_glib_boxed), (start_function),
    (start_field), (start_alias):
    Refactor a couple of parsing functions to be simpler to follow.
    Avoid huge ifs.


svn path=/trunk/; revision=481
2008-08-24 11:01:44 +00:00
Johan Dahlin
78f4434ef6 Remove left-over code, checking type of function.
2008-08-24  Johan Dahlin  <johan@gnome.org>

    * girepository/girparser.c (start_function):
    Remove left-over code, checking type of function.


svn path=/trunk/; revision=480
2008-08-24 10:43:02 +00:00
Colin Walters
4c2a09226b Remove duplicate start_boxed.
svn path=/trunk/; revision=474
2008-08-23 21:29:58 +00:00
Colin Walters
20b10e4542 Add debug print, fix includes
svn path=/trunk/; revision=470
2008-08-23 16:36:15 +00:00
Colin Walters
ca6a30f98a Ignore <include>. Parse them. Generate them. Process <include>
2008-08-22  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c: Ignore <include>.
	* giscanner/girparser.py: Parse them.
	* giscanner/girwriter.py: Generate them.
	* giscanner/transformer.py: Process <include>
	recursively.  Don't require full path for
	includes, look in {$XDG_DATA_DIRS}/gir.
	* tools/g-ir-scanner: Pass through includes.
	* Makefile.am: Remove extra --include
	args for scanner.
	* *-expected.gir: Add expected includes.

svn path=/trunk/; revision=467
2008-08-23 16:11:01 +00:00
Colin Walters
e4c8517aac Pass through recursive types. Avoid overwriting errors. Always write the
2008-08-22  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c: Pass through
	recursive types.  Avoid overwriting errors.
	* giscanner/xmlwriter.py: Always write the
	XML header.
	* tests/*.gir: Adjust.
	* tests/scanner/Makefile.am: Build typelibs,
	and generate XML from those.  Once we
	have a good diff mechanism...
	* tests/scanner/*-expected.gir: Add XML
	header.
	* tools/g-ir-scanner: Accept --typelib-xml
	option.
	* tools/generate.c: Better defaults for transfer.

svn path=/trunk/; revision=457
2008-08-22 20:05:23 +00:00
Johan Dahlin
9152ea35ab Remove compilation warnings
2008-08-21  Johan Dahlin  <johan@gnome.org>

    * girepository/girparser.c (resolve_aliases):
    Remove compilation warnings


svn path=/trunk/; revision=431
2008-08-21 08:20:07 +00:00
Colin Walters
4de606f07d And parse them.
2008-08-20  Colin Walters  <walters@verbum.org>

	* girepository/girparser.py: And parse them.

svn path=/trunk/; revision=425
2008-08-20 19:57:10 +00:00
Colin Walters
e47f68925e Avoid alias infloops.
2008-08-20  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c: Avoid alias infloops.

svn path=/trunk/; revision=420
2008-08-20 19:01:20 +00:00
Colin Walters
abcebee79f Union field parsing
2008-08-20  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c: Parse union fields.

svn path=/trunk/; revision=416
2008-08-20 15:05:46 +00:00
Johan Dahlin
bf5761db23 make it compile again...
svn path=/trunk/; revision=388
2008-08-16 21:57:59 +00:00
Johan Dahlin
5241ccb843 Reorder
svn path=/trunk/; revision=387
2008-08-16 21:55:06 +00:00
Johan Dahlin
27314af58e Clear up constant parsing
2008-08-14  Johan Dahlin  <johan@gnome.org>

    * girepository/girparser.c (start_field), (start_constant),
    (start_type), (end_element_handler):
    Clear up constant parsing

    * tests/object.gir:
    Update

    * tools/generate.c (write_callable_info), (write_function_info),
    (write_callback_info), (write_constant_info), (write_signal_info),
    (write_vfunc_info), (write_property_info), (write_object_info),
    (write_interface_info):
    Constants/Signals are handled now.


svn path=/trunk/; revision=377
2008-08-14 19:32:26 +00:00
Johan Dahlin
698bcf0af5 Don't require c:type. Test boxed.gir Update, remove parts we don't support
2008-08-14  Johan Dahlin  <johan@gnome.org>

    * girepository/girparser.c (start_type):
    Don't require c:type.
    * tests/Makefile.am:
    Test boxed.gir
    * tests/boxed.gir:
    Update, remove parts we don't support yet
    * tests/roundtrips.sh:
    Remove
    * tools/generate.c (write_type_info), (write_field_info),
    (write_callable_info), (write_struct_info):
    Make it emit proper gir.


svn path=/trunk/; revision=376
2008-08-14 19:07:34 +00:00
Colin Walters
c368516ae4 Comment data structures. Also squash pointers in resolve_type_name to
2008-08-14  Colin Walters  <walters@verbum.org>

	* giscanner/transformer.py: Comment data structures.
	Also squash pointers in resolve_type_name to correspond
	with what we do for params.
	* giscanner/glibtransformer.py: Print warnings in more
	situations.  Rework checks for method/constructor to
	look up in our GType database instead of just checking
	for *.   Avoid generating <record> for GObject which
	duplicate the <class>.
	* gir/Makefile.am: Generate glib-2.0.gir and gobject-2.0.gir
	in here.


svn path=/trunk/; revision=373
2008-08-14 16:09:06 +00:00
Johan Dahlin
3e28196a98 Allow get_type to be None, set a get_type for GInitiallyUnowned too.
2008-08-13  Johan Dahlin  <johan@gnome.org>

    * girepository/girnode.c (g_ir_node_get_full_size_internal):
    * girepository/girparser.c (start_class):
    * giscanner/glibtransformer.py:
    Allow get_type to be None, set a get_type for GInitiallyUnowned too.


svn path=/trunk/; revision=362
2008-08-13 21:44:38 +00:00
Colin Walters
de7d01898e Record typedefs as <alias> elements. Also attempt to look up types in
2008-08-12  Colin Walters  <walters@verbum.org>

	* giscanner/transformer.py: Record typedefs as <alias> elements.
	  Also attempt to look up types in external namespaces.
	* giscanner/girwriter.py: Write them.
	* giscanner/glibtransformer.py: Rework resolver using real instanceof
	checks.  Resolve interface methods and properties.
	* tests/scanner/foo-object.h: Add a method with typedef.
	* tests/scanner/Foo-expected.gir: Update.
	* girepository/girnode.c: Debug tweaks.
	* girepository/girparser.c: Make a first pass through the XML where we
	record all the aliases.  This lets us resolve them as we go through the
	second pass.
	* gir/Makefile.am: Don't install gobject-2.0.gir; we want that to come
	from gir-repository.



svn path=/trunk/; revision=355
2008-08-13 16:10:09 +00:00
Colin Walters
8c6c262f22 Handle 'any'. Add test for void *.
2008-08-12  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c: Handle 'any'.
	* tests/scanner/Foo-expected.gir, tests/scanner/foo-object.h:
	Add test for void *.


svn path=/trunk/; revision=351
2008-08-12 18:49:16 +00:00
Colin Walters
0ed07b5934 Remove usage of (GAPI-oriented) TypeTag in favor of GITypeTag from
2008-08-12  Colin Walters  <walters@verbum.org>

	* girepository/girparser.c, girepository/gtypelib.c,
	girepository/gtypelib.h, girepository/girnode.c:
	Remove usage of (GAPI-oriented) TypeTag in favor of
	GITypeTag from girepository.h.



svn path=/trunk/; revision=347
2008-08-12 15:34:27 +00:00
Johan Dahlin
282a6c644e Move shared *.[ch] files to girepository from tools
2008-08-09  Johan Dahlin  <johan@gnome.org>

    * girepository/Makefile.am:
    * tools/Makefile.am:
    * tools/girmodule.c:
    * tools/girmodule.h:
    * tools/girnode.c:
    * tools/girnode.h:
    * tools/girparser.c:
    * tools/girparser.h:
    * tools/girwriter.c:
    * tools/girwriter.h:
    Move shared *.[ch] files to girepository from tools


svn path=/trunk/; revision=337
2008-08-09 12:46:48 +00:00