Commit graph

193 commits

Author SHA1 Message Date
Age Bosma
757dafa156 Add support for class const fields 2011-09-26 13:52:12 +02:00
Olivier Dufour
f0579eb53d parser: Add property support for ginterface 2011-08-01 21:18:02 +02:00
Bertrand Lorentz
63db97e9ad parser: Handle the G_DEFINE_TYPE_EXTENDED macro
G_DEFINE_TYPE_EXTENDED is the general macro for type implementations, on
which G_DEFINE_TYPE_WITH_CODE is based. Handle it just like
G_DEFINE_TYPE_WITH_CODE.

Reparse the API with that change, which marks a few classes as
implementing GtkStyleProvider.
2011-07-31 12:32:43 +02:00
Bertrand Lorentz
ad74c64345 parser: Fix handling of initialization functions for interfaces
With the new G_DEFINE_INTERFACE macro, the interface initialization
function is named *_default_init, so we need to handle that like
*_base_init and *_class_init.

Reparse gtk/gtk-api.raw and gio/gio-api.raw. This creates some new
signals that were previously incorrectly reported as virtual methods,
and also adds some properties.
2011-07-08 20:12:07 +02:00
Mike Kestner
567e3c81e0 struct padding member regex fix
* gtk/gtk-api.raw: reparse
* parser/gapi2xml.pl: match padding_n for padding members too to catch
   GtkSwitch padding vm slots.
2011-04-20 17:32:55 -05:00
Mike Kestner
1752fca097 Hush versioned scripts generally 2011-04-06 10:53:53 -05:00
Mike Kestner
35b60b19eb Ignore volatile on func param parse.
* gio/gio-api.raw: reparse
* parser/gapi2xml.pl: ignore volatile keyword on function parameters.
2011-02-11 14:04:11 -06:00
Mike Kestner
589681516f Strip volatile keywords in field parse.
* gio/gio-api.raw: reparse
* parser/gapi2xml.pl: strip volatile keyword from field declarations
before parsing them.
2011-02-11 10:07:24 -06:00
Mike Kestner
34c0ecbcf7 The rest of the first pass.
*.*: Stubbing and tweaking and cajoling and disabling to get
the first successful build of 3.0 bindings.
2011-02-08 22:15:37 -06:00
Mike Kestner
32737dc946 Parse G_DEFINE_BOXED_TYPE
* parser/gapi_pp.pl: pass G_DEFINE_BOXED_TYPE macros thru
* parser/gapi_pp.pl: add G_DEFINE_BOXED_TYPE handling
2011-01-31 08:51:10 -06:00
Mike Kestner
a1f9eef0b8 Fix for some whitespace parsing in Funcs.
* parser/gapi2xml.pl: regex updates to support a bit more whitespace.
2011-01-30 17:06:58 -06:00
Mike Kestner
6a4e3bafac struct function pointer field regex fix.
* parser/gapi2xml.pl: match when there is whitespace after the
function name within the parens of a struct field declaration.
2011-01-22 10:37:36 -06:00
Mike Kestner
2ffb49b6c3 Pass typedef struct _Foo Foo; through gapi_pp.
* parser/gapi_pp.pl: in source files, still pass simple struct typedefs
through to support parsing gio 2.27.90.  No idea why they are hiding
signal vm declarations in gdbusauthobserver.
2011-01-09 11:27:15 -06:00
Mike Kestner
3e0df87118 Ignore G_GNUC_INTERNAL macros.
2010-11-21  Mike Kestner  <mkestner@novell.com>

	* parser/gapi_pp.pl: ignore G_GNUC_INTERNAL macro usage
	while parsing C code.
2010-11-21 21:27:45 -06:00
Mike Kestner
fe2d4c311a Flatten the bootstrap and remove glade-sharp
2010-11-21  Mike Kestner  <mkestner@novell.com>

	* removed the glade dir from the build since libglade is
	no longer supported in gnome3.  removed the gapi2-compat stuff
	since it doesn't make much sense now.  Removed the bootstrap
	mechanism since we are unlikely to be releasing multiple API
	versions from the same tree going forward.  The build is now a
	straight autogen.sh like most autotools projects.
2010-11-21 21:18:06 -06:00
Mike Kestner
a948792be0 2009-11-30 Mike Kestner <mkestner@novell.com>
* */Makefile.am: standardize on - options over / options for 
	consistency.  Also assists with build on msys. [Fixes #550667]

svn path=/trunk/gtk-sharp/; revision=147125
2009-11-30 20:40:34 +00:00
Christian Hoff
3000674ebd 2009-07-24 Christian Hoff <christian_hoff@gmx.net>
* parser/Makefile.am: Another build fix. Sigh...

svn path=/trunk/gtk-sharp/; revision=138630
2009-07-24 13:47:59 +00:00
Christian Hoff
c969175187 2009-07-24 Christian Hoff <christian_hoff@gmx.net>
* generator/gapi3-codegen.in, parser/gapi3-fixup.in, parser/gapi3-parser.in:
	"svn add" a few missing files to resurrect the build.

svn path=/trunk/gtk-sharp/; revision=138603
2009-07-24 05:19:17 +00:00
Christian Hoff
a4331a40ed 2009-07-23 Christian Hoff <christian_hoff@gmx.net>
* configure.in.in, Makefile.include: Bump up GAPI version to 3.0.
	* bootstrap-2.14: Renamed to bootstrap-for-the-insane, added message
	of doom.	[Fixes #521449]

svn path=/trunk/gtk-sharp/; revision=138572
2009-07-23 17:18:03 +00:00
Mike Kestner
9d5b3e97be 2009-04-25 Mike Kestner <mkestner@novell.com>
* parser/gapi-fixup.cs: add remove-attr and change-node-type
	fixup rules.  [Fixes #494194]

svn path=/trunk/gtk-sharp/; revision=132676
2009-04-26 03:08:54 +00:00
Christian Hoff
291ee61b2d 2009-04-13 Christian Hoff <christian_hoff@gmx.net>
Add support for virtual methods(vm) to the generator.

	* parser/gapi2xml.pl: Generate a class_struct element with
	all members of the class structure. Dump the first (instance)
	parameter for signal and vm elements. Bump up parser version.
	* generator/GObjectVM.cs: Added. Support for GObject virtual methods.
	* generator/DefaultSignalHandler.cs: Signal specific part of vm
	generation.
	* generator/InterfaceVM.cs: New class for interface vms.
	* generator/ObjectBase.cs: Parse the class struct.

svn path=/trunk/gtk-sharp/; revision=131604
2009-04-13 17:44:48 +00:00
Christian Hoff
01ed1a5e3e 2009-03-19 Christian Hoff <christian_hoff@gmx.net>
* parser/gapi2xml.pl: Introduce a "parser_version" attribute.
	* generator/GenBase.cs: Implement a property to access the
	attribute's value.

svn path=/trunk/gtk-sharp/; revision=129807
2009-03-19 18:13:01 +00:00
Mike Kestner
146deaa38c 2009-01-04 Mike Kestner <mkestner@novell.com>
* *: update to 2.14.  parser support for GSEALed fields. svn build
	now uses bootstrap-2.14.  integrate gio-sharp module.  

svn path=/trunk/gtk-sharp/; revision=122402
2009-01-04 22:29:56 +00:00
Mike Kestner
74105a1c80 2008-11-05 Mike Kestner <mkestner@novell.com>
* atk/atk-api-2.12.raw: regen
	* gtk/gtk-api-2.12.raw: regen
	* generator/Signal.cs: reinstate old custom marshaler generation and
	generate custom marshaling when 'manual' attr is set.
	* parser/gapi2xml.pl: set manual attr on sigs that have G_TYPE_POINTER
	parameters since the generic closure can't cope with them.

svn path=/trunk/gtk-sharp/; revision=118068
2008-11-06 02:23:21 +00:00
Mike Kestner
621b39b531 2008-05-15 Mike Kestner <mkestner@novell.com>
* kill the makefile.win32 build system.  it has been unmaintained
	for quite some time, replaced by the auto* build in cygwin.

svn path=/trunk/gtk-sharp/; revision=103308
2008-05-15 17:36:46 +00:00
Mike Kestner
d1dbdf0316 2008-05-08 Mike Kestner <mkestner@novell.com>
* atk/atk-api-2.12.raw: reparsed.
	* gdk/gdk-api-2.12.raw: reparsed.
	* gtk/gtk-api-2.12.raw: reparsed.
	* parser/gapi2xml.pl: fixes for signal and vm order needed for 
	proper interface struct layout. [Fixes #386802]

svn path=/trunk/gtk-sharp/; revision=102848
2008-05-08 23:23:49 +00:00
Mike Kestner
a3f799ceb0 2008-04-30 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl: put class struct field in the signal elems.
	* atk/atk-api-2.12.raw:
	* gdk/gdk-api-2.12.raw:
	* gtk/gtk-api-2.12.raw:

svn path=/trunk/gtk-sharp/; revision=102238
2008-04-30 19:42:11 +00:00
Mike Kestner
6c5f622c43 2007-12-17 Mike Kestner <mkestner@novell.com>
* parser/gapi_pp.pl: parse 'typedef struct\n{' properly.

svn path=/trunk/gtk-sharp/; revision=91495
2007-12-17 21:14:30 +00:00
Mike Kestner
778f049caa 2007-12-11 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl: fix tightloop in single-line prop declarations.

svn path=/trunk/gtk-sharp/; revision=91136
2007-12-12 02:53:11 +00:00
Mike Kestner
029e85265a 2007-11-29 Mike Kestner <mkestner@novell.com>
* parser/gapi_pp.pl: collapse embedded multiline function fields 
	to a single line.  [Fixes #344853]

svn path=/trunk/gtk-sharp/; revision=90461
2007-11-30 01:58:10 +00:00
Mike Kestner
eeabe5a15e 2007-07-26 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl : beef up error message for signal vm parse.
	[Fixes #82149]

svn path=/trunk/gtk-sharp/; revision=82826
2007-07-26 21:01:33 +00:00
Mike Kestner
cdf0658754 2007-07-20 Mike Kestner <mkestner@novell.com>
* gtk/gtk-api-2.10.raw : refresh.
	* parser/gapi_pp.pl : combine lines that end in '\' before sending
	them through the pattern matching.  [Fixes #79214]

svn path=/trunk/gtk-sharp/; revision=82359
2007-07-20 15:32:38 +00:00
Wade Berrier
3e3e0f1469 * generator/gapi2-codegen.in:
* parser/gapi2-fixup.in:
* parser/gapi2-parser.in:
Don't use 'which' anymore, as it doesn't work in all caes (ie:
when symlinks are
in the way)


svn path=/trunk/gtk-sharp/; revision=76653
2007-05-03 22:36:34 +00:00
Mike Kestner
eab29b501e handle private virtual methods
svn path=/trunk/gtk-sharp/; revision=73648
2007-03-02 18:25:22 +00:00
Mike Kestner
8214e5ccd4 2007-01-09 Bart Deleye <bart.deleye@gmail.com>
* parser/gapi_pp.pl : regex fix for tinymail parse.

svn path=/trunk/gtk-sharp/; revision=70734
2007-01-09 19:47:28 +00:00
Mike Kestner
a3efa762f5 2006-08-10 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl : class parsing regex needs to handle protected
	comments too.

svn path=/trunk/gtk-sharp/; revision=63593
2006-08-10 15:06:05 +00:00
Mike Kestner
a5d696a8b0 2006-08-01 Mike Kestner <mkestner@novell.com>
* gtk/gtk-api-2.10.raw : reparsed
	* parser/gapi_pp.pl : put a newline after G_DEFINE_TYPE macros
	on the output and do a next if we shouldn't fall out of the 
	branch.

svn path=/trunk/gtk-sharp/; revision=63232
2006-08-01 22:20:54 +00:00
Mike Kestner
6abcf29dfa 2006-07-27 Mike Kestner <mkestner@novell.com>
* bootstrap*: kill the 2.4/2.6/2.8 straps, they are on a 
	branch now. update 2.10 strap for new apis.
	* sources/Makefile.am : parse 2.16 sources for gnome libs.
	* sources/gtk-sharp-2.10-sources.xml : ditto.
	* parser/gapi-parser.cs : explicitly use an indented XML writer.
	* gnomevfs/gnome-vfs-api-2.16.raw: regen
	* gnomevfs/Gnomevfs.metadata: some build fixes
	* gnome/gnome-api-2.16.raw: regen
	* gnome/Gnome.metadata: some build fixes
	* sample/PrintSample.cs: remove new Gtk/Gnome ambiguities.

svn path=/trunk/gtk-sharp/; revision=63078
2006-07-28 15:39:10 +00:00
Mike Kestner
bcf941851d 2006-07-15 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl : regex fix needed for vfs 2.15.3 parse.

svn path=/trunk/gtk-sharp/; revision=62632
2006-07-15 05:22:11 +00:00
Mike Kestner
98b4307aba 2005-12-10 Mike Kestner <mkestner@novell.com>
* gtk/gtk-api-2.8.raw : regenerated.
	* gtk/IconView.custom : manually implement a new interface method.
	* parser/gapi_pp.pl : more general G_DEFINE_TYPE_WITH_CODE parsing
	implementation.
	[Fixes #76266]

svn path=/trunk/gtk-sharp/; revision=54192
2005-12-10 13:17:47 +00:00
Wade Berrier
a36a3d4c0e * .pc and wrapper scripts: Use relative paths so gtk-sharp is
relocatable


svn path=/trunk/gtk-sharp/; revision=52437
2005-11-01 05:12:12 +00:00
Mike Kestner
6e9ebf451c 2005-09-15 Mike Kestner <mkestner@novell.com>
* parser/gapi-fixup.cs : warn on unmatched rules.  reworked from a Dan
	Winship patch.  [Fixes #76088]

svn path=/trunk/gtk-sharp/; revision=50091
2005-09-15 16:54:00 +00:00
Mike Kestner
376b8f42ac 2005-08-30 Mike Kestner <mkestner@novell.com>
* parser/gapi_pp.pl : ignore ifndef *_H_ lines like in 1.0.x.
	[Fixes #75938]

svn path=/trunk/gtk-sharp/; revision=49151
2005-08-30 20:12:43 +00:00
Joe Shaw
4ecc1e8f03 2005-08-23 Joe Shaw <joeshaw@novell.com>
* parser/gapi2xml.pl: Handle "type const *" return types
	as well.  I think this is all of them!

svn path=/trunk/gtk-sharp/; revision=48753
2005-08-23 18:24:56 +00:00
Joe Shaw
68550ba02a 2005-08-23 Joe Shaw <joeshaw@novell.com>
* parser/gapi2xml.pl: Fix a cut-and-paste error in handling
	"type const *" fields.

svn path=/trunk/gtk-sharp/; revision=48751
2005-08-23 18:03:43 +00:00
Mike Kestner
a4a90e0797 2005-08-23 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl : handle foo const * fields.
	* gnome/gnome-api-2.10.raw : regen.

svn path=/trunk/gtk-sharp/; revision=48745
2005-08-23 17:02:47 +00:00
Joe Shaw
6018f119d3 2005-08-22 Joe Shaw <joeshaw@novell.com>
* parser/gapi2xml.pl: Fix a minor bug handling "type const *"
	parameters.

svn path=/trunk/gtk-sharp/; revision=48704
2005-08-22 23:11:08 +00:00
Mike Kestner
349de99a82 2005-08-22 Mike Kestner <mkestner@novell.com>
* parser/gapi2xml.pl : handle "type const *" parameters.
	* gdk/gdk-api-2.8.raw : regened probably from one of danw's parser
	fixes.  [Fixes #75844]

svn path=/trunk/gtk-sharp/; revision=48681
2005-08-22 16:59:04 +00:00
Dan Winship
622c360576 * parser/gapi2xml.pl (addFuncElems): if a struct or boxed type has
a constructor or a ref, unref, or destroy method, then it must be
	a reference type, so mark it "opaque" but then also mark all of
	its fields public and writable.

	* */*-api*.raw: Regen

	* generator/Parser.cs (ParseNamespace): make the opaque attribute
	check actually look at the value of the attribute rather than just
	checking if it's there, so that you can change a struct's opaque
	attribute from "true" to "false" via metadata and have that work.

	* generator/BoxedGen.cs (Generate): do not generate the boxed's
	"Free" method (since it's guaranteed to crash when we pass it a
	stack pointer). If "Copy" is marked deprecated, create a
	deprecated no-op for it, otherwise just skip it (since otherwise
	it will just leak memory when we copy its result onto the stack).

	* pango/Pango.metadata: deprecate Pango.Color.Copy and
	Pango.Matrix.Copy. Hide some array fields in Pango.GlyphString
	that we've never generated correctly. Tweak Pango.LayoutLine
	fields to be the same as they used to be.

	* pango/GlyphItem.custom (glyphs, item):
	* pango/GlyphString.custom (Zero, New):
	* pango/Item.custom (Zero, New):
	* pango/LayoutRun.custom (glyphs, item): add deprecated API compat

	* gdk/Gdk.metadata: undo the parser's new opaquification of
	Gdk.Font; it's been deprecated since pre-gtk# times, and no one
	should be using it, so there's no point in fixing it now. Fix up a
	few other things to match how they used to be. Fix RgbCmap's
	constructor args.

	* gdk/RgbCmap.custom (Zero, New): deprecated API compat

	* gdk/PangoAttrEmbossed.custom:
	* gdk/PangoAttrStipple.custom (Zero, New, Attr): deprecated API
	compat
	(explicit operator ...): allow casting back and forth between
	Pango.Attribute. (We can't usefully make them real subclasses of
	Pango.Attribute, because there's no way for
	Pango.Attribute.GetAttribute() to be able to dtrt with them.)

	* gtk/Gtk.metadata: deprecate Gtk.Requisition.Copy,
	Gtk.TextIter.Copy, and Gtk.TreeIter.Copy. Mark the return value of
	TextView.DefaultAttributes as "owned". Mark TargetList's fields
	private so it stays how it used to be.

	* gtk/TextAttributes.custom (Zero, New): deprecated API compat

	* gnomevfs/Gnomevfs.metadata: remove a bunch of opaque
	declarations that the parser figures out on its own now.

	* art/Art.metadata:
	* glade/Glade.metadata:
	* rsvg/Rsvg.metadata: un-mark everything the parser marked opaque
	in these libraries, because all of the structs in question would
	still be unusably broken, so the API churn would be pointless.

svn path=/trunk/gtk-sharp/; revision=48387
2005-08-15 15:15:57 +00:00
Dan Winship
eb4fdee774 Automatic memory management for opaque types [#49565]
* glib/Opaque.cs (Owned): new property saying whether or not gtk#
	owns the memory.
	(Opaque): Set Owned to true in the void ctor and false in the
	IntPtr one.
	(GetOpaque): add a new overload that can also create opaques, a la
	GLib.Object.GetObject.
	(Ref, Unref, Free): empty virtual methods to be overridden by
	subclasses.
	(set_Raw): Unref() and possibly Free() the old value, Ref() the
	new one.
	(~Opaque, Dispose): set Raw to IntPtr.Zero (triggering Free/Unref
	if needed)

	* parser/gapi2xml.pl (addReturnElem): if the method is named Copy
	and returns a pointer, set the "owned" attribute on the
	return-type.

	* */*-api.raw: Regen
	
	* generator/HandleBase.cs (FromNative): Add new
	FromNative/FromNativeReturn overloads that takes a "bool owned"
	param. Implement the 1-arg FromNative and FromNativeReturn in
	terms of that.

	* generator/ObjectBase.cs (FromNative): Implement HandleBase's new
	overload. Use the two-arg version of GLib.Object.GetObject when
	"owned" is true.

	* generator/OpaqueGen.cs (Generate): Pull out Ref, Unref, and
	Free/Destroy/Dispose methods and handle them specially by
	overriding Opaque.Ref, .Unref, and .Free appropriately. (If any
	of the methods are marked deprecated, output a deprecated
	do-nothing method as well, to save us from having to write all
	those deprecated methods by hand.)
	(FromNative): use GetOpaque, passing "owned".

	* generator/ReturnValue.cs (FromNative): if the value is a
	HandleBase, pass Owned to its FromNative().

	* generator/Parameters.cs (Owned): new property (for use on out
	params)
	(FromNative): Call FromNative() on the generatable, handling Owned
	in the case of HandleBase.

	* generator/ManagedCallString.cs:
	* generator/MethodBody.cs:
	* generator/Signal.cs: use param.FromNative() rather than
	param.Generatable.FromNative(), to get ownership right.

	* */*.metadata: Mark opaque ref/unref/free methods deprecated
	(except where we were hiding them before). Add "owned" attributes
	to return values and out params as needed.

	* pango/AttrIterator.custom (GetFont): work around a
	memory-management oddity of the underlying method.

	* pango/AttrFontDesc.cs (AttrFontDesc): copy the passed-in
	FontDescriptor, since the attribute will assume ownership of it.

	* gtk/TreeView.custom (GetPathAtPos): set the "owned" flag on the
	returned TreePaths.

	* gtk/TargetList.custom: Remove refcounting stuff, which is
	now handled automatically

	* gtk/NodeStore.cs (GetPath): clear the Owned flag on the created
	TreePath so that the underlying structure doesn't get freed when
	the function returns

	* gtkhtml/HTMLStream.custom (Destroy): hide this and then
	reimplement it by hand to keep OpaqueGen from using it in
	Dispose(), since calling it after an HTMLStream.Close() will
	result in a crash.

svn path=/trunk/gtk-sharp/; revision=47928
2005-08-02 18:45:21 +00:00