* girepository/girnode.c: Allow gtype_name
and gtype_init in struct and union.
* girepository/girparser.c: Parse glib:
boxed bits for both structure and union.
* girepository/gtypelib.c: Don't barf
if structure is boxed.
* giscanner/girparser.py: Parse new XML
format.
* giscanner/girwriter.py: Write out new
XML format.
* giscanner/glibast.py: Define new classes
which are both Boxed and Struct/Union, as
well as an "Other" for everything else.
* giscanner/glibtransformer.py: Handle
boxed types specially; we try to merge
them with a struct/union if one exists,
otherwise fall back to generic boxed.
* tests/*: Update.
* tools/generate.c: Write out new format.
svn path=/trunk/; revision=575
* gir/Makefile.am: Dep on Makefile
* girepository/ginfo.c: Print out a nicer error
message if we failed to load something.
* girepository/girepository.c: Clean up
default typelib handling; remove global
default_typelib variable. Ensure we handle
NULL repository in more places.
Support dependency resolution.
* tests/Makefile.am: Kill off gobject.gir,
it conflicts with the real one.
* tests/Object.gir: Depend on GObject.
* tools/generate.c: Take --includedir
argument to say which directories to search
for typelibs. Print out dependencies.
svn path=/trunk/; revision=541
* girepository/ginfo.c: Add some assertions regarding
refcounts, just to be sure.
* giscanner/glibtransformer.py: Blacklist a few more
odd Gio methods.
svn path=/trunk/; revision=537
* 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
* 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 Tor Lillqvist <tml@novell.com>
* tools/compiler.c (write_out_typelib): Use binary mode for output
file on Windows.
* girepository/girnode.c: Don't print NULL strings.
* tests/invoke/Makefile.am
* tests/scanner/Makefile.am: Use -no-undefined on Windows to
convince libtool to build shared libraries.
* tests/invoke/invoke.c: Don't needlessly include <dlfcn.h>. Use
g_assert() instead of printing out expected errors.
svn path=/trunk/; revision=509
2008-08-28 Tor Lillqvist <tml@novell.com>
* girepository/gtypelib.h: Change type of bitfield fields from
guint to the most suitable smaller type. This makes the struct
sizes match the ones on Linux that the sanity check expects when
using gcc -mms-bitfields on Windows.
svn path=/trunk/; revision=508
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-26 Colin Walters <walters@verbum.org>
* girepository/girepository.c: Search
$DATADIR/girepository instead of
$DATADIR/gitypelibs; this naming makes
it clearer that e.g. jgir can install
.jars there.
* gir/Makefile.am: Install there.
svn path=/trunk/; revision=502
2008-08-26 Colin Walters <walters@verbum.org>
* girepository/gtypelib.c (_g_typelib_init): Also
use G_MODULE_SUFFIX instead of hardcoding .so.
svn path=/trunk/; revision=501
2008-08-26 Colin Walters <walters@verbum.org>
* girepository/gtypelib.c (_g_typelib_init): Free
string in the right place.
svn path=/trunk/; revision=500
2008-08-26 Colin Walters <walters@verbum.org>
* girepository/gtypelib.c (_g_typelib_init): Handle
both .la and .so names; this works better in the
uninstalled library case.
svn path=/trunk/; revision=498
2008-08-24 Colin Walters <walters@verbum.org>
* girepository/girepository.c (g_irepository_require):
Don't open shared library here; we already do it
in gtypelib.c.
svn path=/trunk/; revision=483
2008-08-24 Colin Walters <walters@verbum.org>
* girepository/gtypelib.c: Add context stack so
when we get an error we can print out nicely
where it is.
svn path=/trunk/; revision=482
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-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-21 Johan Dahlin <johan@gnome.org>
* girepository/girepository.c (g_irepository_require):
Plug memory leak and avoid using freed memory.
Resolve the whole module path, here as well.
svn path=/trunk/; revision=441
2008-08-21 Colin Walters <walters@verbum.org>
* girepository/girmodule.c (g_ir_module_build_typelib):
Revert change to increment header_size; we do that in
write_string.
svn path=/trunk/; revision=440
2008-08-21 Colin Walters <walters@verbum.org>
* girepository/girnode.c (write_string): Tweak to
use UINT instead of INT. Not likely to matter.
* girepository/girmodule.c (g_ir_module_build_typelib):
Add to header_offset as well for header strings
to match what write_string does.
* girepository/gtypelib.c: Replace is_name with
validate_name, which more strongly validates and
handles errors in a better way. Update all callers.
* giscanner/glibtransformer.py: Handle constructors
better.
svn path=/trunk/; revision=439
2008-08-21 Johan Dahlin <johan@gnome.org>
* girepository/gtypelib.c (_g_typelib_init):
Use g_module_build_path to resolve the shlib name
svn path=/trunk/; revision=437
2008-08-21 Colin Walters <walters@verbum.org>
* girepository/girparser.c (g_irepository_require):
Fix one small leak in error case.
svn path=/trunk/; revision=434
2008-08-21 Johan Dahlin <johan@gnome.org>
* girepository/girepository.c (g_irepository_require):
Rewrap and fix double free bug by leaking a bit.
svn path=/trunk/; revision=430
2008-08-20 Colin Walters <walters@verbum.org>
* girepository/girepository.c: Add new function
g_irepository_get_typelib_path which tells
us from where we loaded a namespace.
svn path=/trunk/; revision=429
2008-08-20 Colin Walters <walters@verbum.org>
* girepository/girepository.c: Remove
g_irepository_register_file in favor of
g_irepository_require. There are two
possible deployment scenarios for typelibs:
First, separate in $DATADIR/gitypelibs/. Second,
they may be embedded in shlibs. However since
the first is now the normal case, the API is
optimized around it.
Refactor internals to look up typelibs for
namespaces just-in-time, but we expect
consumers to call g_irepository_require.
Also, add some docs. No one has died from that
before.
* gir/Makefile.am: Need --library for glib.
* giscanner/girwriter.py: Write out shared-library.
* tools/g-ir-writer: Take the first --library
argument as the target of shared-library. In
the future we should make this nicer with pkg-config
probably.
svn path=/trunk/; revision=426