diff options
author | Mirco Bauer <meebey@meebey.net> | 2012-11-05 06:56:55 +0100 |
---|---|---|
committer | Mirco Bauer <meebey@meebey.net> | 2012-11-05 06:56:55 +0100 |
commit | ddd3cd07e76a5b7e1632e2d17f81849a5d1c15d4 (patch) | |
tree | fe2ff46cf5ebc5054f0e54879631bf4a4398dc9d | |
parent | 7ccade3b3d18045b82d955e6844ee30e71dd5ef2 (diff) |
Imported Upstream version 2.99.1~git20121105.135e4cd
115 files changed, 8753 insertions, 20475 deletions
@@ -1,24 +1,95 @@ -Mike Kestner <mkestner@ximian.com> +Maintainers: + Mike Kestner -Documentation: - - psonek2@seznam.cz +Contributors: + Aaron Bockover + Age Bosma + Alejandro Sánchez Acosta + Alex Launi + Alexandre Gomes + Alp Toker + Andrés G. Aragoneses + Atsushi Eno + Ben Maurer + Ben Motmans + Bertrand Lorentz + Bob Smith + Brad Taylor + Cameron White + Carlos Martín Nieto + Charles Iliya Krempeaux + Chris Turchin + Christian Hergert + Christian Hoff + Dan Winship + Daniel Kornhauser Eisenberg + Daniel Morgan Duncan Mak + Eric Butler + Erik Dasque + Ettore Perazzoli + Fawad Halim + Gabriel Burt + Gonzalo Paniagua Javier + Hector E. Gomez Morales + Iain McCoy + Jaime Anguiano Olarra + Jamin Philip Gray + Jasper van Putten + Jeffrey Stedfast + Jeroen Zwartepoorte + Joe Shaw + Johannes Roith + John Luke + Jordi Mas i Hernandez + Joshua Tauberer + Juli Mallett + Kevin Breit + Kristian Rietveld + Larry Ewing + Lee Mallabone + Lluis Sanchez + Marek Habersack + Mark Crichton + Mark Probst + Marques Johansson + Martin Baulig + Martin Willemoes Hansen + Michael Hutchinson Miguel de Icaza - John Luke <john.luke@gmail.com> - Marques Johansson <marques@displague.com> - Iain McCoy <iain@mccoy.id.au> - eric@extremeboredom.net (Eric Butler) - Jamin Philip Gray <jamin@pubcrawler.org> - chris@turchin.net (Chris Turchin) - jaspervp@gmx.net (Jasper van Putten) - wizito@gentelibre.org ( Néstor Salceda) + Mike Gorse + Mike Kestner + Mirco Bauer + Néstor Salceda + Olivier Dufour + Owen Fraser-Green + Paolo Molaro + Pedro Martínez Juliá + Pete Johanson + Peter Williams + Rachel Hestilow + Radek Doulik + Raja R Harinath + Ricardo Fernández Pascual + Robert McQueen + Rodrigo Moya + Shane Landrum + Stephan Sundermann + Stephane Delcroix + Tambet Ingo + Todd Berman + Urs C. Muff + Vladimir Vukicevic + Wade Berrier + Zac Bowling + Zoltan Varga + bis0n@mail.ru cmorgan@alum.wpi.edu - hris@protactin.co.uk ddollar@blueshiftdesign.com - bis0n@mail.ru fsjrb@uaf.edu + hris@protactin.co.uk joe@fatnsoft.com + petr pixelpapst@users.sourceforge.net - alexmipego@hotmail.com - wizito@gentelibre.org + psonek2@seznam.cz +
\ No newline at end of file diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 8fb193b..0000000 --- a/ChangeLog +++ /dev/null @@ -1,13928 +0,0 @@ -2010-05-10 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: mark Widget.CreatePangoLayout retval as owned. - [Fixes #604050] - -2010-03-25 Mike Kestner <mkestner@novell.com> - - * gdk/Rectangle.custom: off-by-one in Right/Bottom. [Fixes #591148] - -2009-12-28 Mike Kestner <mkestner@novell.com> - - * glib/glue/Makefile.am: fix a copy/paste issue. - * pango/glue/Makefile.am: move glue lib to -3 like the others. - [Fixes #561148] - -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] - -2009-11-30 Mike Kestner <mkestner@novell.com> - - * gtk/Widget.custom: add Path method overload. [Fixes #521360] - -2009-11-30 Mike Kestner <mkestner@novell.com> - - * generator/Method.cs: support win32_utf8_variant attribute on methods. - * glib/*.cs: support win32 utf8 variant methods. - * gtk/*.custom: support win32 utf8 variant methods. - * gtk/Gtk.metadata: mark some win32_utf8_variant methods. - [Fixes #550961] Adapted from a patch by Tor Lillqvist. - -2009-11-28 Mike Kestner <mkestner@novell.com> - - * glib/GException.cs: add Code and Domain props to expose the GError - fields to interested users. [Fixes #555675] - -2009-11-23 Christian Hoff <christian_hoff@gmx.net> - - * generator/Signal.cs: Return a GInterfaceAdapter in the signalargs's - accessor properties instead of trying to return the implementor as stored in - the arguments array. - -2009-11-01 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs: avoid cast exceptions passing ints as objects on - gulong values. [Fixes #539812] - -2009-10-30 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: avoid another exception on bogus assm.Locations. - [Fixes #546045] - -2009-09-24 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Widget.custom: Use Glib.Value's GType.Long support. - -2009-09-23 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs: support long and ulong gtypes. still can't construct - generically, but can cast to long/ulong and access via Val prop. - [Fixes #539812] - -2009-09-23 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: support metadata override of default return - values. Based on a patch from Sebastian Dröge. [Fixes #541299] - -2009-09-22 Brad Taylor <brad@getcoded.net> - - * glib/Idle.cs: - * glib/Timeout.cs: Don't try to remove the handler from the managed - hashtable twice, add a comment explaining the need for the else branch. - -2009-09-22 Brad Taylor <brad@getcoded.net> - - * glib/Idle.cs: - * glib/Timeout.cs: Make sure to remove the unmanaged reference to the - delegate when we're disposed or finalized. In particular, this fixes a - problem where GLib.Object's PerformQueuedUnrefs was being called after - both the object and the handler had been GC'ed, resulting in a - segfault. - -2009-09-16 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: hide StatusIcon.GetGeometry for custom impl. - * gtk/StatusIcon.custom: custom GetGeometry implementation to avoid - marshaling exceptions on win32. [Fixes #518169] - -2009-09-11 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: add support for native instantiation of - managed types. - * glib/ParamSpec.cs: add Flags ctor overload. - * sample/NativeInstantiationTest.cs: new sample to test the - unmanaged instantiation capability. - Based on a patch from Sebastian Dröge [Fixes #499900] - -2009-09-11 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Application.cs: Port the theming-relevant part of the - SWF.Application.DoEvents code to avoid loading the assembly - at runtime on the Windows platform. - -2009-09-03 Christian Hoff <christian_hoff@gmx.net> - - * glib/Global.cs: Kill the calling convention field again. - It breaks GLib 2.x compatibility in the generator and there is - probably no need to make the calling convention configurable. - * .cs, *.custom: Hardcode Cdecl calling convention instead of - using GLib's field. - -2009-09-02 Christian Hoff <christian_hoff@gmx.net> - - * glib/Global.cs: Add a public constant field specifying the - calling convention used by GLib and depending libraries. - By now it's hardcoded to Cdecl as every non-Win32 runtime - should ignore this attribute. - * *.cs, *.custom: Use GLib.Global.CallingConvention for both - pinvokes and callbacks. Plugs a stack leak on Win32. All - pinvokes defaulted to StdCall and thus the stack was never - cleaned up. - -2009-08-30 Christian Hoff <christian_hoff@gmx.net> - - Complete the major version jump. Gtk# 3 and 2 are now both - installable within the same prefix. - - * */glue/Makefile.am: Produce *sharpglue-3 gluelibs. - * *.custom, *.cs: pinvoke the new glue library. - * *-2.0.pc.in: Rename to *-3.0.pc.in. - -2009-08-30 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Object.custom: Deglue the floating reference API. - We should consider moving all that stuff to GInitiallyUnowned - as Gtk+ did several releases ago. - -2009-08-30 Christian Hoff <christian_hoff@gmx.net> - - * gtk/StatusIcon.custom: Use managed code to pass the address of - gtk_status_icon_position_menu to gtk_menu_popup. - -2009-08-19 Christian Hoff <christian_hoff@gmx.net> - - * generator/*.cs: Add the "partial" keyword to each generated class, - struct and interface. - -2009-08-19 Christian Hoff <christian_hoff@gmx.net> - - * glib/MainContext.cs: Add API to create new MainContexts. Add a few - missing methods. - * glib/MainLoop.cs: Allow creating MainLoops in non-default MainContexts. - [Fixes #526232] - -2009-08-18 Christian Hoff <christian_hoff@gmx.net> - - * sample/GtkDemo/Makefile.am: Resurrect local Mono.Cairo build. - -2009-08-13 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Widget.custom: Set the activate/set_scroll_adjustments signal IDs - from managed code. Use the gtk_widget_get_window accessor. - * gtk/glue/widget.c: Remove the corresponding glue functions. - -2009-08-13 Christian Hoff <christian_hoff@gmx.net> - - * generator/IGeneratable.cs: Remove MarshalReturnType, ToNativeReturnType, - FromNativeReturn and ToNativeReturn as they never returned something else - than MarshalType, FromNative/AllocNative and CallByName, respectively. - * generator/Signal.cs: Use AllocNative for IManualMarshalers. - -2009-08-12 Christian Hoff <christian_hoff@gmx.net> - - * configure.in.in: Detect GDK backend. - * */*.dll.config.in: Link against the libs of the correct GDK backend - instead of using x11 on Linux/win32 on Windows. - Patch by Christian Hergert. [Fixes 527840] - -2009-08-07 Mike Kestner <mkestner@novell.com> - - * configure.in.in: add new dir and autofu for it. - * Makefile.am: add new dir - * gapi/*: a small extension method library to add generation-related - api to GType in 2.0. Access it with -pkg:gapi-2.0-compat to pick up - the needed refs. - * generator/GObjectVM.cs: generate new GType getter methods. - * generator/ObjectGen.cs: generate new GType getter methods. - * glib/GType.cs: change a few props to methods to make them extension - method friendly for 2.0 compat. - * glib/Object.cs: use new GType getter methods. - * glib/Value.cs: use new GType getter methods. - * gtk/Widget.custom: use new GetClassPtr method. - -2009-08-07 Mike Kestner <mkestner@novell.com> - - * generator/ObjectGen.cs: kill GType ctor generation. - * glib/InitiallyUnowned.cs: kill obsolete GType ctor. - * glib/Object.cs: kill obsolete GType ctor. - * gtk/Gtk.metadata: kill disable_gtype_ctor rules. - * gtk/Widget.cs: kill obsolete GType ctor. - -2009-08-07 Mike Kestner <mkestner@novell.com> - - * glib/Log.cs: rework the LogFunc marshaling and add SetDefaultHandler - binding to override all domains easily. [Fixes #517857] - -2009-08-07 Christian Hoff <christian_hoff@gmx.net> - - * gtk/glue/clipboard.c: Kill as it is not used any more. - -2009-08-07 Christian Hoff <christian_hoff@gmx.net> - - * gtk/SelectionData.custom: Use gtk_selection_data_get_data instead - of a glue func to access the data field. - -2009-08-05 Christian Hoff <christian_hoff@gmx.net> - - * sample/CustomcellRenderer.cs: Use GObject property registration - instead of a CellDataFunc. - -2009-08-05 Christian Hoff <christian_hoff@gmx.net> - - * generator/InterfaceGen: Override CallByName to handle interface - adaptors properly. [Fixes #527478] - -2009-08-01 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: lock the types hash to support threaded access and - type registration. Apparently gtype access/registration is threadsafe - in glib. [Fixes #526229] - -2009-07-30 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: remove var keyword usage to fix build on - .Net 2.0. fix a couple mixed line endings as well. - -2009-07-27 Mike Gorse <mgorse@novell.com> - - * atk/Atk.metadata: Remove owned for Relation.GetTarget. - -2009-07-26 Mike Kestner <mkestner@novell.com> - - * bootstrap-for-the-insane: update the assembly versions and package - version and kill the policies. Give a little more helpful message of - doom. - -2009-07-24 Christian Hoff <christian_hoff@gmx.net> - - * parser/Makefile.am: Another build fix. Sigh... - -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. - -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] - -2009-07-21 Christian Hoff <christian_hoff@gmx.net> - - * glib/GInterfaceAdapter.cs: Fix a leak related to GCHandles not being freed. - Patch from Mike Kestner with a minor tweak by me. [Fixes #523306] - -2009-07-13 Gabriel Burt <gabriel.burt@gmail.com> - - * generator/GenBase.cs: Add AppendCustom override that you can pass the - type name in, used to include .custom for Name + Adapter and Name + - Implementor .custom files for interface gen. - - * generator/InterfaceGen.cs: Use the new AppendCustom override for the - Name + Adapter.custom file, and add support for including custom file for - the Name + Implementor interface; necessary to manually implement an - interface method. - -2009-07-12 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: add ResolveType event and TypeResolutionHandler delegate - declarations. This mechanism supports the lazy registration of type mappings - by bindings. Patch from Sebastian with minor naming tweek. [Fixes #497667] - -2009-07-12 Mike Kestner <mkestner@novell.com> - - * generator/Parameters.cs: another owned parameter patch from Sebastian. - [Fixes #498498] - -2009-07-12 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: fail gracefully for non-studly-case typename lookups. - [Fixes #515453] - -2009-07-12 Mike Kestner <mkestner@novell.com> - - * sample/Makefile.am: fix for cairo conflicts related to the switch to gmcs. - * sample/GtkDemo/Makefile.am: fix for cairo conflicts related to the switch to gmcs. - -2009-07-12 Mike Kestner <mkestner@novell.com> - - * generator/ObjectBase.cs: add CallByName overload with ownership. - * generator/Parameters.cs: support owned by callee parameters. - Adapted from a patch by Maarten Bosmans. [Fixes #513680] - -2009-07-10 Christian Hoff <christian_hoff@gmx.net> - - * pango/Pango.metadata: Mark "ink_rect" and "logical_rect" parameters of Get*Extends - methods as "out". [Fixes #510105] - -2009-07-02 Christian Hoff <christian_hoff@gmx.net> - - * configure.in.in: Target .net 2.0 profile - * gapi-cdecl-insert: Kill. We are now using the UnmanagedFunctionPointerAttribute - for callbacks. - * glib/CdeclCallback.cs: Mark obsolete. - * generator/*.cs: - * *.custom: Use [UnmanagedFunctionPointer (CallingConvention.Cdecl)] instead of - [GLib.CDeclCallback]. - -2009-06-15 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Widget.custom: Don't use [MarshalAs] for struct fields since - that is not supported in the .net framework - -2009-06-08 Christian Hoff <christian_hoff@gmx.net> - - * generator/Signal.cs: Fix indexing of the signal arguments array for - "out" and "ref" parameters. [Fixes #508572] - -2009-05-28 Aaron Bockover <abockover@novell.com> - - * generator/EnumGen.cs: Fix enum generator to properly parse integer - values with type modifier suffixes (UL, L, U), and not accidentally - munge named values that happen to end in one of these suffixes - -2009-05-18 Stephane Delcroix <sdelcroix@novell.com> - - * configure.in.in: - * bootstrap-generic: - * bootstrap-2.14: check for mono >= 2.2. not that it requires it to - build, but the generated bindings need it to run. - -2009-05-13 Sebastian Dröge <sebastian.droege@collabora.co.uk> - - * glib/Value.cs: return int object value for GType.Enum values if - the explicit gtype is not found. [Fixes #503060] - -2009-05-13 Sebastian Dröge <sebastian.droege@collabora.co.uk> - - * glib/ValueArray.cs: use type specific PtrToStructure marshaling to - avoid ArgumentExceptions. [Fixes #503467] - -2009-05-13 Sebastian Dröge <sebastian.droege@collabora.co.uk> - - * glib/Value.cs: Add support for ValueArrays inside GLib.Values. - * glib/ValueArray.cs: Add GType property to get the ValueArray GType. - [Fixes #503048] - -2009-05-12 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs: explicit exception for unknown props. - [Fixes #502043] Patch by Sebastian Dröge. - -2009-05-12 Mike Kestner <mkestner@novell.com> - - * glib/ValueArray.cs: make ctor(IntPtr) public for binding usage. - [Fixes #503189] Patch by Sebastian Dröge. - -2009-05-12 Mike Kestner <mkestner@novell.com> - - * gtk/Application.cs: add the theme initialization workaround for - windows. Hopefully we can find a better solution that doesn't - involve loading SWF. [Fixes #471682] - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * gtk/RadioMenuItem.custom: implement subclassing for group/label - ctor. [Fixes #320971] - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * gtk/PaperSize.custom: add static props for Letter and the other - named papers. [Fixes #324687] - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * glib/Idle.cs: add a Remove overload for consistency. - * glib/Timeout.cs: add a Remove overload for consistency. - [Fixes #356138] - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * generator/EnumGen.cs: support 1L long values or explicit types. - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: null-term array marshaling for vms. - * generator/VirtualMethod.cs: use ToNative return type in native - callbacks. - [Fixes #501294] Patch by Sebastian Dröge. - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * generator/FieldBase.cs: mangle compound typenames for glue. - [Fixes #501329] Patch by Sebastian Dröge. - -2009-05-06 Mike Kestner <mkestner@novell.com> - - * generator/VirtualMethod.cs: refactoring to reuse retval prop. - [Fixes #501307] Patch by Sebastian Dröge. - -2009-05-05 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: ensure threading is initialized in cctor. - * gtk/Application.cs: ditto. - -2009-05-04 Christian Hoff <christian_hoff@gmx.net> - - * generator/ClassField.cs: Derive from StructField. - * generator/ObjectBase.cs: Implement validation mechanism for - class structures. If the structure contains bitfields or fields - of unknown types, we cannot generate it in managed code. - * generator/GObjectVM.cs: Fall back to glue if the class structure - cannot be generated. [Fixes #498051] - -2009-05-03 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: revert to old LookupType behavior when Handle is - not set. [Fixes #500417] - -2009-05-03 Stephane Delcroix <sdelcroix@novell.com> - - * glib/Idle.cs: - * glib/Timeout.cs: add Add() overloads taking a priority - * glib/Makefile.am: - * glib/Priority.cs: Priority enum, used as argument for the new Add - overloads - -2009-05-02 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: updates for new RecentItems prop. - * gtk/Makefile.am: add new custom. - * gtk/RecentManager.custom: obsolete Items prop impl. - [Fixes #387754] - -2009-05-02 Mike Kestner <mkestner@novell.com> - - * configure.in.in: forward port of a win32 fix from 2-12-branch. - -2009-05-01 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: get gtype from instance data. - * glib/Value.cs: use instance NativeType when initing for props. - [Fixes #500157] Patch by Sebastian Dröge. - -2009-04-28 Mike Kestner <mkestner@novell.com> - - * generator/Parameters.cs: ref parameter marshaling fix. - [Fixes #498472] Patch by Sebastian Dröge. - -2009-04-27 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Widget.custom: Implement signal registration for the - Activate, SettScrollAdjustments and key binding signals - in managed code. - -2009-04-25 Mike Kestner <mkestner@novell.com> - - * generator/OpaqueGen.cs: support abstract opaque classes, - though I have no idea why anyone would want one. - [Fixes #494212] Revised patch from Sebastian Dröge. - -2009-04-25 Mike Kestner <mkestner@novell.com> - - * parser/gapi-fixup.cs: add remove-attr and change-node-type - fixup rules. [Fixes #494194] - -2009-04-25 Mike Kestner <mkestner@novell.com> - - * generator/OpaqueGen.cs: support declaring managed ifaces. - [Fixes #494193] Revised patch from Sebastian Dröge. - -2009-04-24 Stephane Delcroix <sdelcroix@novell.com> - - * generator/Ctor.cs: Read the name attribute for constructors - converted to static factory methods. - -2009-04-21 Christian Hoff <christian_hoff@gmx.net> - - * glib/Value.cs: Fixes for fundamental GType support. Patch - provided by Sebastian Dröge. - -2009-04-21 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Widget.custom: Deglued implementation of StyleGetProperty. - -2009-04-16 Christian Hoff <christian_hoff@gmx.net> - - * glib/Value.cs: Support for additional fundamental GTypes. Invoke - constructor of corresponding managed type to convert a GValue into - its managed representation and a SetGValue method to do that vice - versa. Patch contributed by Sebastian Dröge. - -2009-04-15 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Makefile.am - * glib/Makefile.am: take advantage of the same InternalsVisibleTo - because the moon assemblies will be monomerged. - -2009-04-15 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Makefile.am - * glib/Makefile.am - * Makefile.include: Added new 'moonlight' target, to build with - smcs. - -2009-04-14 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Adjustment.custom: Deglued implementation of SetBounds. - * gtk/glue/Adjustment.c: Kill. - -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. - -2009-04-09 Mike Kestner <mkestner@novell.com> - - * glib/ListBase.cs: fix g_object_unref dllimport lib. - [Fixes #493128] - -2009-04-05 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Target.custom: custom implementation of TableNewFromList. - * gtk/TargetList.custom: use Target.TableNewFromList method - to convert the TargetList to a TargetEntry array. - * gtk/glue/targetlist.c: deleted. - -2009-03-28 Christian Hoff <christian_hoff@gmx.net> - - * gtk/TextBuffer.custom: Use the right overload of Marshal.Copy - [Fixes #480010] - -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. - -2009-03-17 Mike Kestner <mkestner@novell.com> - - * bootstrap-generic: expose LIBTOOLIZE env variable to support - building on mac osx with glibtoolize. [Fixes #480559] - -2009-03-17 Christian Hoff <christian_hoff@gmx.net> - - * gdk/Property.custom: add new overloads to the Get method - for the most common property types - * gdk/Global.custom: Use the new overloads of Property.Get instead of glue - -2009-03-16 Mike Kestner <mkestner@novell.com> - - * gtk/NodeSelection.cs: use new Adapter prop on NodeStore. - * gtk/NodeStore.cs: some encapsulation rework. - * gtk/NodeView.cs: use new Adapter prop on NodeStore. new methods - to support manipulation of the view by TreeNode, like scrolling - and cell bounds lookups. - * gtk/TreeView.cs: use new Adapter prop on NodeStore. - * doc/en/Gtk/NodeView.xml: new doc updates. - Patch provided by Vladimir Giszpenc. [Fixes #480067] - -2009-03-07 Mike Kestner <mkestner@novell.com> - - * configure.in.in: add --disable-glade-sharp configure option - to explicitly disable the conditional build. [Fixes #423131] - -2009-03-04 Christian Hoff <christian_hoff@gmx.net> - - * gtk/NodeStore.cs: reimplement NodeStore as a managed TreeModel using GInterface implementation - * gtk/glue/nodestore.c: kill - -2009-02-27 Stephane Delcroix <sdelcroix@novell.com> - - * gdk/Gdk.metadata: - * gdk/PixbufFormat.custom: - * gdk/Makefile.am: deprecate IsDisabled in favor of the Disabled - property - -2009-02-27 Stephane Delcroix <sdelcroix@novell.com> - - * gdk/Gdk.metadata: fix GdkPixbufFormat mime_types and extensions - -2009-02-24 Christian Hoff <christian_hoff@gmx.net> - - * glib/Value.cs: Change the pad fields handling again as the - previous approach didn't work on Win32. [Fixes #478578] - -2009-02-17 Christian Hoff <christian_hoff@gmx.net> - - * sample/gtk-gio/MountOperation.cs: - * gtk/Builder.custom: - * glib/Value.cs: Resurrect build for MS .NET Framework - -2009-02-06 Christian Hoff <christian_hoff@gmx.net> - - * gtk/Gtk.metadata: Fix TreeModel.EmitRowsReordered signature - -2009-01-29 Mike Kestner <mkestner@novell.com> - - * generator/OpaqueGen.cs: generate a finalizer for classes which - have free or unref methods and ensure it runs on the gui thread. - * glib/Opaque.cs: remove finalize handling. - Fixes a 'resurrection' issue with the previous 419777 fix. - -2009-01-29 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: add binding for "focus-event" signal: - http://library.gnome.org/devel/atk/unstable/AtkObject.html#AtkObject-focus-event - -2009-01-27 Mike Kestner <mkestner@novell.com> - - * glib/Opaque.cs: ensure we are running on the gui thread when we - dispose from the finalizer. [Fixes #419777] - -2009-01-26 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs: make the pad fields a blink explicitly sized struct - instead to avoid alignment issues on x86. [Fixes #469135] - -2009-01-23 Mike Kestner <mkestner@novell.com> - - * Makefile.include: - * doc/Makefile.am: - * glib/Makefile.am: - * gtkdotnet/Makefile.am: parallel make patches from Diego Pettenò - and Bertrand Lorentz. [Fixes #421063] - -2009-01-13 Brad Taylor <brad@getcoded.net> - - * atk/Atk.metadata: Bind GetRunAttributes and GetDefaultAttributes as - Atk.Attribute[] instances instead of GLib.SList. [Fixes #393565] - -2009-01-13 Mike Kestner <mkestner@novell.com> - - * gdk/glue/event.c: kill - * gdk/glue/selection.c: kill - * gdk/Selection.cs: hardcode the primary, secondary, and clipboard - atom definitions instead of using glue to access their macros. - * gdk/Event*.cs: rewrite to use layout structures instead of glue - for field accessors. Also enable writing for all fields. - [Fixes #323373] - -2009-01-12 Mike Kestner <mkestner@novell.com> - - * glib/Opaque.cs (GetOpaque): return null for IntPtr.Zero. - -2009-01-12 Mike Kestner <mkestner@novell.com> - - * configure.in.in: don't hardcode CC when cross-compiling. - * gapi-cdecl-insert: monodis support on mono. - * Makefile.am: add a cross-compile bundling target. The goal is to - build a .zip which can be extracted on win32 to run candle and light, - avoiding cygwin to produce installers. Hopefully some day wix will - run on linux. - -2009-01-08 Mike Kestner <mkestner@novell.com> - - * cairo/Makefile.am: use mono.snk to sign the Mono.Cairo assembly - so that it's compatible with mono built versions. Initial patch - from Christian Hoff with a few tweaks. - -2009-01-08 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: generate Adapters for consume_only ifaces - too. This seems unusual, but is primarily to produce at least one - 'generic' implementation of every interface and a GetObject method - so that the marshaling code can always return an object which - implements the interface, even if no public object wrapper exists for - the underlying c GObject type. - -2009-01-08 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: map gfilename* list elements to type - ListBase.FilenameString so they are marshaled correctly. - * glib/Marshaller.cs: handle FilenameStrings in ListPtrToArray. - * gtk/Gtk.metadata: FileChooser.GetFilenames and ListShortcutFolders - return type mangling to avoid custom implementations. - * gtk/FileChooser*.custom: kill manual Filenames and ShortcutFolders. - -2009-01-08 Stephane Delcroix <sdelcroix@novell.com> - - * gio/Gio.metadata: change AppInfo's CanRemoveSupportsType to a - property. - -2009-01-08 Stephane Delcroix <sdelcroix@novell.com> - - * gio/Gio.metadata: change AppInfo's ShouldShow, SupportsFiles and - SupportsUris to properties. - -2009-01-07 Mike Kestner <mkestner@novell.com> - - * generator/MethodBody.cs: avoid null ref when passing null to - destroy notified callback parameters. [Fixes #464120] - -2009-01-06 Mike Kestner <mkestner@novell.com> - - * configure.in.in: update to use mdoc. - * doc/Makefile.am: update to use mdoc. - * doc/gtk-sharp-docs.source: add node element to conform to new - monodoc layout model. - -2009-01-05 Andrés G. Aragoneses <aaragoneses@novell.com> - - * GType.cs: - * Value.cs: Revert r122505. - [Reasoning on #448009] - -2009-01-06 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: fix gtk_icon_theme_lookup_by_gicon return-type - and name. - -2009-01-06 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: fix gicon property name for CellRendererPixbuf - -2009-01-06 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: fix gicon property, getter and setter for StatusIcon - -2009-01-06 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: rename SetFromGicon to SetFromIcon and GetGicon to - GetIcon. - -2009-01-06 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: fix the gtk_image_get_gicon signature (pass as out) - -2009-01-06 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: rename the Gicon property of GtkImage to Icon. - -2009-01-05 Andrés G. Aragoneses <aaragoneses@novell.com> - - * GType.cs: convert GType.Is to a non-static function. - * Value.cs: track API. - [Last cosmetic bit from #448009] - -2009-01-05 Stephane Delcroix <sdelcroix@novell.com> - - * bootstrap-2.14: - * bootstrap-generic: - * configure.in.in: depend on glib/gio 2.18 - -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. - -2009-01-04 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: fix incorrect null check noticed by Christian Hoff. - [Fixes #463445] - -2009-01-02 Mike Kestner <mkestner@novell.com> - - * configure.in.in: clarify the Mono.Cairo summary comment. - -2008-12-22 Andrés G. Aragoneses <aaragoneses@novell.com> - - * generator/InterfaceGen.cs: track API. - * glib/GType.cs: simplify, avoiding a static method. - * glib/Value.cs: reuse g_type_is_a. - [Improves fix for #448009 in r121990] - -2008-12-22 Andrés G. Aragoneses <aaragoneses@novell.com> - - * generator/InterfaceGen.cs: use the new GLib API to detect - instances that don't implement GInterfaces. - * glib/GType.cs: add new API for checking if an IntPtr instance - implements a certain GType. - [Fixes #448009] - -2008-12-20 Stephane Delcroix <sdelcroix@novell.con> - - * glib/Timeout.cs: map AddSeconds (). - -2008-12-19 Mike Kestner <mkestner@novell.com> - - * generator/BoxedGen.cs: don't generate glue dependencies. - * glib/*.cs: remove glibsharpglue usage except thread.c. - * glib/glue/*.c: kill all but thread.c. need glib 2.20 to kill - it eventually. - * pango/Attr*.cs: kill glue usage. - * pango/glue/*.c: kill all but generated.c. it's next. - * gtk/TreeIter.custom: kill a dumb glibsharpglue usage. - -2008-12-12 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: tagged for 2.12.7. Bump svn version. - * audit/base: update base apiinfo's for 2.12 stable api. - -2008-12-08 Andrés G. Aragoneses <aaragoneses@novell.com> - - * glib/Signal.cs: Improve protection against invalid signals. - -2008-12-02 Stephane Delcroix <sdelcroix@novell.com> - - * generator/Ctor.cs: - * generator/Method.cs: - * generator/MethodBase.cs: refactor the Protection from Method to - MethodBase, generate ctors with the correct protection too. - -2008-12-01 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: automarshal TreeSelection.GetSelectedRows. - * gtk/TreeSelection.custom: kill GetSelectedRows customization. - [Fixes #450689] - -2008-12-01 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: automarshal TreeView.Columns. - * gtk/TreeView.custom: kill Columns customization. - [Fixes #450685] - -2008-11-28 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs: remove ref int workaround now that we fallback - to signal-specific marshalers for G_TYPE_POINTER using signals. - Fixes #450119. - -2008-11-26 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Image.custom: - * gtk/Gtk.metadata: obsolete Image.FromPixbuf, FromAnimation, - FromFile setters in favor of already existing Pixbuf, Animation and - File. - -2008-11-26 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: bump svn version. - * cairo/Makefile.am: policy config is hard-coded, not generated. - -2008-11-26 Mike Kestner <mkestner@novell.com> - - * configure.in.in: prepend CFLAGS environment setting to AC_SUBST. - Patch from Diego Petteno. [Fixes #443175] - -2008-11-25 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs: fix for 'IntPtr as object' value construction. - -2008-11-24 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Makefile.am: - * atk/SelectionAdapter.custom: new method for firing selection-changed - ( http://library.gnome.org/devel/atk/stable/AtkSelection.html#AtkSelection-selection-changed ) - -2008-11-21 Mike Kestner <mkestner@novell.com> - - * glib/ManagedValue.cs: rework to ref count a ManagedValue instance - and pass a GCHandle to it around, instead of taking out multiple - gchandles on the managed target itself. - -2008-11-21 Stephane Delcroix <sdelcroix@novell.com> - - * glib/Global.cs: implement Global.ApplicationName for localized - application name. - -2008-11-21 Stephane Delcroix <sdelcroix@novell.com> - - * Makefile.am: - * glib/Format.cs: new class to map the g_format methods - -2008-11-15 Mike Kestner <mkestner@novell.com> - - * gdk/Event.cs: add EventOwnerChange to GetEvent. - * gdk/EventOwnerChange.cs: manual subclass of Gdk.Event. - * gdk/Gdk.metadata: hide EventOwnerChange. - * gdk/Makefile.am: add EventOwnerChange.cs. - * gdk/gdk-symbols.xml: add EventOwnerChange. - -2008-11-15 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: mark the SpinButton::Output signal as manually - marshaled to avoid a compat break. The old manual marshaler expected - and int RetVal and the new signal closure more accurately expects a - bool. Since returning 1 previously worked, we need to revert to the - int expectation, even though bool is technically more correct. - -2008-11-14 Brad Taylor <brad@getcoded.net> - - * glib/Object.cs: Bind g_object_notify. - * doc/en/GLib/Object.xml: Document new API. - -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. - -2008-11-05 Mike Kestner <mkestner@novell.com> - - * gtk/Builder.custom: #if the new API for 2.14 for now so it - doesn't get confused as stable API yet. - -2008-11-04 Mike Gorse <mgorse@novell.com> - - * glib/PtrArray.cs, glib/glue/ptrarray.c, glib/Makefile.am, - glib/glue/Makefile.am, glib/gtype.cs, generator/SymbolTable.cs, - generator/ReturnValue.cs: Add PtrArray. - * glib/Marshaller.cs: Add PtrArrayToArray. - - * atk/Atk.metadata: Specify GetTarget return type. - - * atk/Object.custom, atk/glue/object.c: Support overriding - RefRelationSet. - -2008-11-03 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.metadata: - * gtk/StatusIcon.custom: Obsolete the duplicated properties. - -2008-10-29 Mike Kestner <mkestner@novell.com> - - * glib/Signal.cs : custom marshaling hooks - * glib/SignalClosure.cs : support for custom marshalers. - -2008-10-28 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Gtk.Metadata: hide ConnectSignals. - - * gtk/Builder.Custom: connect the signals, and the objects. - GetObjectRaw method: allows very neat object inheritance. - -2008-10-27 Stephane Delcroix <sdelcroix@novell.com> - - * glib/ListBase.cs: DataMarshal: create the right object for *Adapter - list items. - -2008-10-08 Mike Gorse <mgorse@novell.com> - - * atk/Object.custom: Pass Handle in EmitChildrenChanged (fix critical) - -2008-10-24 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: register IntPtr. - -2008-10-22 Peter Johanson <peter@peterjohanson.com> - - * gtk/TreeModelAdapter.custom: - * gtk/TreeModelFilter.custom: - * gtk/TreeModelSort.custom: - * gtk/TreeStore.custom: Don't trigger any gtk+ critical - warnings when the 'rows-reodered' signal is fired. - -2008-10-21 Mike Kestner <mkestner@novell.com> - - * tagged 2.12.5. - -2008-10-21 Mike Kestner <mkestner@novell.com> - - * cairo/*: add a policy assembly for 1.0 defering to 2.0. - -2008-10-13 Brad Taylor <brad@getcoded.net> - - * Makefile.am: - * configure.in.in: - * gtk-sharp-2.0-lib.wxs.in: - * gtk-sharp-2.0-dev.wxs.in: Replace version numbers in wxs files, - import gtk-sharp-2.0-dev.wxs. - -2008-10-13 Mike Kestner <mkestner@novell.com> - - * Makefile.am: installer target - * gtk-sharp-2.0-lib.wxs: new installer config file - -2008-10-12 Andrés G. Aragoneses <aaragoneses@novell.com> - - Fixes BNC#426876. - * generator/InterfaceGen.cs: throw ArgumentNullException in - the Adapter's constructor that receives an implementor. - -2008-10-09 Mike Kestner <mkestner@novell.com> - - * cairo/*.cs: flatten source hierarchy to simplify win32 build. - * sample/Makefile.am: fix a ref issue with local cairo. - -2008-10-09 Mike Kestner <mkestner@novell.com> - - * configure.in.in: magic for local Mono.Cairo build. - * cairo/*: a local build of Mono.Cairo for .Net-only builds on win32. - * */Makefile.am: use local Mono.Cairo where necessary. - -2008-10-09 Mike Kestner <mkestner@novell.com> - - * configure.in.in: kill dead config.in. - * sample/CairoSample.cs: some dispose handling and cleanup. - * sample/cairo-sample.exe.config.in: kill, no pinvoke needed now. - * sample/GException.cs: GException test sample. - * sample/GtkCairo.cs: kill, replaced by Gdk.CairoHelper.Create. - * sample/Makefile.am: cleanup. - -2008-10-08 Mike Gorse <mgorse@novell.com> - - * Atk/Makefile.am, Atk/ObjectFactory.custom, Atk/glue/Makefile.am, - Atk/glue/object_factory.c: Add ObjectFactory.custom and - glue/object_factory.c. - -2008-10-02 Mike Gorse <mgorse@novell.com> - - * Atk/Makefile.am, Atk/Hyperlink.custom, Atk/glue/Makefile.am, - Atk/glue/hyperlink.c: Add Hyperlink.custom and glue/hyperlink.c. - -2008-09-30 Mike Kestner <mkestner@novell.com> - - * generator/EnumGen.cs: - * generator/InterfaceGen.cs: - * generator/StructBase.cs: fix build breakage in prev commit. - -2008-09-30 Stephane Delcroix <sdelcroix@novell.com> - - * generator/CallbackGen.cs: - * generator/ClassGen.cs: - * generator/EnumGen.cs: - * generator/GenBase.cs: - * generator/InterfaceGen.cs: - * generator/Method.cs: - * generator/OpaqueGen.cs: - * generator/StructBase.cs: - * generator/ObjectGen: check for the internal attribute - * generator/Method.cs: check for the accessibility attribute; - -2008-09-24 Mike Gorse <mgorse@novell.com> - - * atk/Atk.metadata: Mark rect in GetRangeExtents as out. - -2008-09-24 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: kill the FindTypeInReferences recursive loading - algorithm and instead do a name-based search through the references - of loaded assemblies only. Fixes the original bug #400595 and it - hopefully will have fewer sideeffects that the recursive loading - approach. - -2008-09-24 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: just fail on location null or empty instead of - checking the assembly type. Avoids failures on the ms runtime. - -2008-09-23 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: bump svn version after tag. - -2008-09-23 Mike Gorse <mgorse@novell.com> - - * atk/Makefile.am: add atk/atk.h to glue_includes. - * atk/glue/Makefile.am: Compile atk/glue/generated.c. - -2008-09-23 Andrés G. Aragoneses <aaragoneses@novell.com> - - Fixes BNC#384475. - * atk/Object.custom: Provide a new overload that receives an - enum instead of an ulong, for a friendlier managed API. - -2008-09-18 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: bump svn version. - * generator/Signal.cs: add a workaround for G_TYPE_POINTER usage - in the GtkEditable::text_inserted signal. The signal parameter - received by the closure will be an IntPtr, which we then have to - use to read/write the value directly from unmanaged memory. - [Fixes #427588] - -2008-09-18 Mike Kestner <mkestner@novell.com> - - * generator/LPGen.cs: remove WIN64LONGS hackery. - * generator/LPUGen.cs: remove WIN64LONGS hackery. - * generator/SymbolTable.cs: for WIN64LONGS, map them directly to - (u)int SimpleGens instead of using the LP generatables. - -2008-09-16 Jeffrey Stedfast <fejj@novell.com> - - * generator/Property.cs (IsDeprecated): Allow "1" or "true". - - * generator/Method.cs (.ctor): Allow "1" or "true". - - * generator/ClassBase.cs: Allow a value of "true" to work the same - as "1" for the deprecated and abstract attributes. - - * generator/ObjectGen.cs (Generate): Remove the extra generated - space if the class isn't abstract. - -2008-09-12 Zoltan Varga <vargaz@gmail.com> - - * glib/GType.cs (FindTypeInReferences): Put a try-catch around the assembly - loading as failure to load a referenced assembly is not really an error. - -2008-09-12 Mike Gorse <mgorse@novell.com> - - * atk/Object.custom, atk/glue/object.c: Support GetIndexInParent. - -2008-09-09 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: warning cleanup. - * gtk/Gtk.metadata: warning cleanup. - -2008-09-09 Zoltan Varga <vargaz@gmail.com> - - * glib/GType.cs (FindTypeInReferences): Skip dynamic assemblies. - -2008-09-08 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: beef up the referenced assembly loading code to - handle assemblies located in the same directory as the referring - assembly. Fixes #423450. - -2008-09-05 Andrés G. Aragoneses <aaragoneses@novell.com> - - Fixes BNC#387220. - * glib/glue/signal.c: New glue file to call g_signal_query(). - * glib/glue/Makefile.am: Add signal.c. - * glib/Signal.cs: check return type prior to emitting. - -2008-08-28 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Util.custom: unregister get_root function when the setter - receives null. Partial fix for BNC#411444. - -2008-08-27 Mike Kestner <mkestner@novell.com> - - * generator/ManagedCallString.cs: use existing Parameters.IsHidden - method to check for hidden user data. - -2008-08-27 Mike Kestner <mkestner@novell.com> - - * generator/ManagedCallString.cs: revert last change. There are a - lot of "broken" callback sigs out there which expose user data because - it's not in the last parameter in the list. I don't think we can - reasonably make a change to hide all those at this point. This change - at least hides all the user_data which comes right before a GError - param at the end of the list. I need to follow up with a change which - handles data parameters in any parameter position, but allows the user - to mark "exposed" data params for compatibility reasons. - * generator/Parameters.cs: hide data params which are at the end of a - list behind an error param. - * gtk/Gtk.metadata: mark an array parameter on - TextBufferDeserializeFunc. - -2008-08-27 Mike Kestner <mkestner@novell.com> - - * glib/Signal.cs: multiple dispose guarding for closures. - -2008-08-27 Mike Kestner <mkestner@novell.com> - - * generator/ManagedCallString.cs: fixes for data parameter hiding - in native to managed callback generation. - -2008-08-20 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: - * glib/Signal.cs: fix a couple 2.0-isms. Patch from Christian Hoff. - -2008-08-20 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: bump svn version after tag. - -2008-08-20 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: use new ListPtrToArray marshaler for - lists with known element types. - * glib/Marshaller.cs: new ListPtrToArray marshaller with more - aggressive list disposal. - * gtk/Container.custom: remove manual Children impl. Use Children - in GetEnumerator instead of pinvoking directly. - * gtk/Gtk.metadata: remove hidden attr and add element type and owned - for Container.GetChildren to generate it properly. - -2008-08-20 Mike Kestner <mkestner@novell.com> - - Patch from Christian Hoff fixing bug #396195. - * generator/Property.cs: handle interface adapter values. - * generator/InterfaceGen.cs: register the gtype so mapping occurs - automatically for interface adapters. New GetObject overload to - handle already wrapped objects more efficiently. - * glib/Value.cs: handle set_Val for interface adapter objects. - -2008-08-19 Brad Taylor <brad@getcoded.net> - - * atk/Object.custom: Add method to allow emission of - visible-data-changed signal. - - * atk/TextChangedDetail.cs: - * atk/TextAdapter.custom: Add method to allow emission of text-changed - signal. - -2008-08-13 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata: switch Value methods to ref params since atk - actually checks for initialized values instead of just treating it - like uninitialized memory. Makes for uglier API, but avoids crashes - in unfortunate memory content scenarios. - -2008-08-04 Mike Kestner <mkestner@novell.com> - - * gtk/IconTheme.custom: elements and the list returned by - ListIcons are owned. - -2008-08-04 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: mark IconTheme.LoadIcon return as owned. - -2008-07-23 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata: map some out params on Atk.Value. They - were unusable in their existing form. - -2008-07-08 Mike Kestner <mkestner@novell.com> - - Patch from Christian Hoff with a few minor tweaks. - * generator/CallbackGen.cs: refactor to use ManagedCallString - and drop a ton of redundant, half-baked code. - * generator/ManagedCallString.cs: add Unconditional setup - method for stuff that has to happen before the try block. - Add "drop_first" concept so it can be reused by CallbackGen - which doesn't drop first params. - * generator/Signal.cs: use Unconditional method for prep. - * generator/VirtualMethod.cs: use Unconditional method for prep. - * gtk/Gtk.metadata: mark a ref param. [Fixes #394352] - -2008-06-28 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: mark ListStore.Reorder array param. - * gtk/ListStore.cs: compat obsolete method, though the old one - was useless. - -2008-06-28 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs: some 64 bit fixes for time_t marshaling - issue found by Federico. - -2008-06-28 Mike Kestner <mkestner@novell.com> - - * gtk/TreeSelection.custom: use list marshaler to avoid O(n^2) - copy from old custom code. [Fixes #404669] - -2008-06-28 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: mark a const string. [Fixes #404630] - -2008-06-27 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: fix a couple out params. - -2008-06-20 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs: Patch from Christian Hoff. Support for byte and - sbyte values. - -2008-06-17 Mike Kestner <mkestner@novell.com> - - * glib/SignalClosure.cs: post back the gvalues after the closure is - invoked using a new Update method on GLib.Value. This only impacts - boxed types, since they are the only "value types" passed by ref in - the signal marshaling environment. We can't call set_boxed on the - value to update it, since that allocs new memory, we need to marshal - the updated struct out to the existing native memory address using - g_value_get_boxed. - * glib/Value.cs (Update): new update method for writing values to - an existing boxed type instance instead of allocating a new native - struct. Fixes #398929. - -2008-06-17 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs (LookupType): traversed referenced assemblies to - find types in currently unloaded assemblies. Fixes #400595. - -2008-06-16 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: - * atk/glue/object.c: - Simplified code for previous issue (recommendation from mkestner). - -2008-06-16 Mike Kestner <mkestner@novell.com> - - * glib/glue/object.c: fixes for object, boxed, and gtype - property paramspec creation. Patch provided by Christian Hoff. - -2008-06-09 Andrés G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: - * atk/glue/object.c: - Temporary workaround for infinite recursion issue. - -2008-06-06 Andrés G. Aragoneses <aaragoneses@novell.com> - - * glib/glue/thread.c: Fix a warning. - -2008-06-06 Mike Kestner <mkestner@novell.com> - - Initial Patch submitted by Christian Hoff with some small - style alterations and a round trip sample by me. Supports the - registration of managed properties with the GType system, so - that things like custom cell renderers can be accessed via the - native property system from treeview. - - * glib/glue/object.c : property registration related glue. - * glib/Object.cs: implement managed property registration. - * glib/PropertyAttribute.cs: add new props and ctor for managed - property registration. - * sample/PropertyRegistration.cs: little test app to test round- - tripping of registered properties. - * sample/Makefile.am: add new sample. - -2008-06-06 Mike Kestner <mkestner@novell.com> - - * atk/Object.custom: use 'as StateSet' instead of cast to avoid - cast exceptions in the null case. Apparently it's not an exception - any more, according to folks on #monodev. I still prefer as for - GetObject 'casting'. - -2008-06-06 Andres G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: - * atk/glue/object.c: Implement virtual method OnRefStateSet(). - -2008-05-30 Mike Kestner <mkestner@novell.com> - - * gdk/Pixbuf.custom: don't use the autogenerated PixbufDestroyNative - delegate type since is has a byte[] parameter that blows up. - -2008-05-30 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom: - * gtk/glue/object.c: remove the destroy override. it doesn't work. - -2008-05-28 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom: move Dispose call to a vm override so that - it runs after all signals and native overrides have run. - * gtk/glue/object.c: destroy override implementation. - -2008-05-28 Lluis Sanchez Gual <lluis@novell.com> - - * gtk/Object.custom: If all destroy handlers have been - unregistered, remove the hashtable entry since it is - not needed anymore. - -2008-05-27 Mike Kestner <mkestner@novell.com> - - * generator/Method.cs (GenerateBody): when generating value type - methods, we should demarshal the 'this' memory before any ref or - out parameters in the event that someone passes 'this' as a param. - That will ensure that an updated value coming back from the native - side ends up in the memory location. - -2008-05-22 Mike Kestner <mkestner@novell.com> - - * gtk/Widget.custom: guard against MissingIntPtrCtorException in - the Activate and SetScrollAdjustments funky signal VM impl. Can't - use SignalClosure easily. Could be reworked more cleanly at some - point. Or not. - -2008-05-21 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom (OnDestroyed): ensure Dispose runs even if - no Destroyed handlers are connected. - -2008-05-21 Mike Kestner <mkestner@novell.com> - - * gtk/Application.cs (CurrentEvent): use Event.GetEvent to retrieve - an explicit event subclass. - -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. - -2008-05-14 Andres G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: Track API changes in GLib.Signal. - * glib/Signal.cs: AddEmissionHook binding (for closing #386950), and - change API of Emit to mimic the detailed_signal pattern. - * glib/GType.cs: GType.FromName: new wrapper for native call. - * glib/ObjectManager.cs: Use the new FromName managed method. - -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] - -2008-05-07 Stephane Delcroix <sdelcroix@novell.com> - - * gtk/Object.custom: swap the event removing and destroy calls. - -2008-05-07 Andres G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom, atk/glue/object.c: Remove unneeded - return types (I don't know why gcc ever let this compile...). - -2008-05-06 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: revert the connection optimization from r102349. - It breaks under the current CellRenderer implementation which probably - can't be reworked compatibly to take advantage of this code. - * glib/SignalClosure.cs: use IntPtr.ToInt64 instead of (long) since - the cast apparently has issues on bleeding edge mono. - -2008-05-06 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: mark Rc.DefaultFiles accessors as null_term_array. - -2008-05-02 Mike Kestner <mkestner@novell.com> - - * generator/GenerationInfo.cs: refactor glue writer implementation - so that GlueEnabled means there is a valid glue writer available. - Avoids crashes in scenarios where an unwriteable glue path is provided - to the generator. Generate a glue function which scans the type - hierarchy of an object for the most-derived unmanaged ancestor so - that we can invoke class methods on it, avoiding infinite recursions. - * generator/Signal.cs: revamp the default handler vm overriding - mechanism. When class fields exist which can be directly hooked into, - we now generate glue to override and chain up to unmanaged base funcs. - This avoids some strangeness in the g_signal_override_class_closure - and g_signal_chain_from_overridden reported in #332300 and also lays - the groundwork for automated generation of non-signal VMs. - * gtk/Gtk.metadata: block signal glue generation for a few types which - don't seem to install headers. - -2008-05-02 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: Don't bother hooking VM into the class field - if another managed ancestor has already done so. Add a LogFunc - printing a stack trace for the GObject log domain if GTK_SHARP_DEBUG - is set in the environment. It's a bit noisy to do unconditionally. - -2008-05-02 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom: some NULL guarding in Dispose and - Destroy handling. - -2008-05-02 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata: hide Global.AddGlobalEventListener. - * atk/Global.custom: AddGlobalEventListener impl. - * atk/Util.custom: AddGlobalEventListenerHandler prop. - [Fixes the rest of #365437] - -2008-05-01 Mike Kestner <mkestner@novell.com> - - * gtk/gtk-api-2.12.raw: regen, removes some private printing API. - * source/gtk-sharp-2.12-sources.xml: hide some private printing API. - -2008-05-01 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: use CName and mangle it. ClassFieldName - is not guaranteed to be set now. - * generator/Signal.cs: read ClassFieldName from the api xml. Move - glue writer lookup inside the block to avoid exceptions for now. - -2008-04-30 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: - * generator/Signal.cs: use generic signal marshaling instead of - generating signature specific marshaling callbacks. - * glib/glue/closure.c: glue for new closure impl. - * glib/Object.cs: open up a couple hashes internally. - * glib/Signal.cs: hook in closure based connection and expose - EmissionHook functionality for atk usage. - * glib/SignalClosure.cs: new generic signal marshaling mechanism. - * glib/ToggleRef.cs: null guarding in Target and let Signal remove - itself from hash when it disposes itself. - -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: - -2008-04-28 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs : Add GParam support and beef up the Boxed - type marshaling to support types with New methods via reflection. - -2008-04-28 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs : Add a few missing static fields. - -2008-04-24 Mike Kestner <mkestner@novell.com> - - * gdk/Window.custom (Destroy): take a normal ref for the native - method to release, and Dispose our toggle ref. Fixes #382186. - -2008-04-24 Andres G. Aragoneses <aaragoneses@novell.com> - - * glib/Signal.cs: Remove unneeded cast. - -2008-04-24 Andres G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: custom protected method for firing - the ChildrenChanged signal. - * glib/Signal.cs: first implementation of a managed - method for emitting signals. - -2008-04-19 Mike Kestner <mkestner@novell.com> - - * gtk/glue/statusicon.c: fix time parameter usage. Not even sure - how that compiled. I <3 C. - -2008-04-17 Mike Kestner <mkestner@novell.com> - - * atk/glue/misc.c: glue for vms and singleton setup. - * atk/Misc.custom: add OnThreadsEnter, OnThreadsLeave, and - SetSingletonInstance members for Bridge implementors. - [More of #365437] - -2008-04-17 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: add Harden method to reduce the reflection - overhead in Gnome.Program. - -2008-04-17 Mike Kestner <mkestner@novell.com> - - * glib/ToggleRef.cs: Add a Harden method to switch to a standard - ref and just leak it. - * gtk/Application.cs: revert the QuitPrepare stuff since it didn't - always work. - -2008-04-17 Mike Kestner <mkestner@novell.com> - - * gtk/TreeModelAdapter.custom: - * gtk/TreeModelFilter.custom: - * gtk/TreeModelSort.custom: reworked patch from Christian Hoff to - throw NotImplementedException for SetValue methods. Those should - never have been added to the interface, and it's better to throw - an exception than have infinite recursion kill the program. - [Fixes #379542] - -2008-04-16 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: hide PrintContext.get_CairoContext. - * gtk/PrintContext.custom: manual get_cairo_context implementation. - Mono.Cairo assumes it is wrapping owned references, so we need to - take a ref out on the returned cairo_t pointer. - * sample/GtkDemo/DemoPrinting.cs: dispose the CairoContext in - to be a good citizen and avoid warnings. - -2008-04-15 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: use new GLib.Opaque.OwnedCopy for owned - opaque return values. - * glib/Opaque.cs: introduce OwnedCopy property to support returning - owned opaque instances from native to managed callbacks. - [Fixes #374641] - -2008-04-15 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: hide GtkKey_ for manual impl. - * gtk/Key.cs: manual implementation to manage delegate wrapper - persistence. [Fixes #378989] - -2008-04-15 Mike Kestner <mkestner@novell.com> - - * gtk/FileSystemModel.custom: remove dead file. - -2008-04-15 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs: marshal null string arrays as a null IntPtr[]. - [Fixes #378514] - -2008-04-14 Mike Kestner <mkestner@novell.com> - - * gtk/Application.cs: add QuitPrepare event for Gnome.Program usage. - -2008-04-08 Marek Habersack <mhabersack@novell.com> - - * generator/InterfaceGen.cs: added a check for null obj in the - generated GetObject method. - -2008-04-04 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata: add a few more owned refs. - -2008-04-04 Mike Kestner <mkestner@novell.com> - - * glib/Global.cs: renamed from Program.cs. Program.Name is now - Global.ProgramName to try to avoid clashes with existing Gnome.Program - usage. - * gtk/Application.cs: s/GLib.Program.Name/GLib.Global.ProgramName. - -2008-04-04 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata: markup all the Ref* methods to indicate owned refs. - * generator/ReturnValue.cs: Add owned object ToNative handling. - * generator/VirtualMethod.cs: Split ToNative call from managed method - invocation to avoid duplicate calls in null checking scenarios. - * glib/Object.cs: add OwnedHandle property for use by language binding - code which needs to pass owned refs to native methods. - -2008-04-04 Mike Kestner <mkestner@novell.com> - - * atk/Object.custom: take out a ref on the return value of - OnRefChild. Also add some null guarding and default to IntPtr.Zero - on exceptions. - -2008-04-01 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: support "generic" interface - implementations like those exposed by gio. This is specifically for - libraries which return GTypes which are not exposed by the library - but which implement GInterfaces which are exposed by the library. - -2008-03-28 Andres G. Aragoneses <aaragoneses@novell.com> - - * atk/Object.custom: custom properties for overriding class methods. - * atk/Makefile.am: include Object.custom. - * atk/glue/object.c: glue to override class methods. - * atk/glue/Makefile.am: include object.c. - -2008-03-27 Andres G. Aragoneses <aaragoneses@novell.com> - - * glib/Program.cs: Add new static class for utility property, moving - the code to call g_set_prgname() from gtk/Application.cs to here, - and changing return value of g_set_program_name from bool to void. - * gtk/Application.cs: Use Program.Name as a replacement of - calling the native function g_set_prgname(). - * glib/Makefile.am: add Program.cs. - -2008-03-21 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: bump svn version - * generator/CallbackGen.cs: add dnotify support to invoker. - Store and respond with incoming UserData params. Start using - __prefixed private vars to avoid collisions with parameters, - like the 'result' params in gio. - * generator/ManagedCallString.cs: use new data/dnotify invoker - ctors. - * generator/MethodBody.cs: - * generator/Parameters.cs: don't link "out" length params to - preceding strings. - * generator/VMSignature.cs: don't require UserData to be last - param, since it can have things like error after it. - -2008-03-21 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: s/GtkDestroyNotify/GDestroyNotify in vms too. - -2008-03-14 Mike Kestner <mkestner@novell.com> - - * pango/AttrList.custom: pass copies of the attrs to insert* - since the list assumes ownership. - * pango/Makefile.am: add new custom file. - * pango/Pango.metadata: hide AttrList.Insert* for custom impl. - -2008-03-12 Mike Kestner <mkestner@novell.com> - - * glib/GType.cs: add an Init method for explicit initialization. - -2008-03-04 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: update version to 2.12 and tag - -2008-02-29 Mike Kestner <mkestner@novell.com> - - * gdk/Event.cs: add New method for consistency with generated - boxed types. Will be used by GLib.Value in the future. - -2008-02-29 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: null-term array handling. - * glib/Marshaller.cs: marshaling methods for null-term arrays. - -2008-02-29 Mike Kestner <mkestner@novell.com> - - * sample/Action.cs: qualify Action usage. - * sample/GtkDemo/DemoApplicationWindow.cs: qualify Action usage. - * sample/GtkDemo/DemoUIManager.cs: qualify Action usage. - -2008-02-29 Mike Kestner <mkestner@novell.com> - - * configure.in.in: atk checks and SUBSTs. - * atk/Util.custom: custom properties for overriding class methods. - * atk/glue/util.c: glue to override class methods. - -2008-02-26 Mike Kestner <mkestner@novell.com> - - * generator/ByRefGen.cs: fix mismatched alloc/free. - -2008-02-22 Mike Kestner <mkestner@novell.com> - - * gdk/Pixbuf.custom: add destroy notification and pin byte[] to - avoid GC complications. Add a couple new convenience ctors as - well. [Fixes #362951] - -2008-02-21 Mike Kestner <mkestner@novell.com> - - * glib/Source.cs: rework proxy removal to avoid boxing profile. - * glib/Idle.cs: save src_id in proxy to facilitate removal. - * glib/Timeout.cs: save src_id in proxy to facilitate removal. - [Fixes #359561] - -2008-02-07 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs: null term array marshaling. - * glib/Marshaller.cs: new marshalers for null-terminated string - arrays. [Fixes #342113] - -2008-02-07 Mike Kestner <mkestner@novell.com> - - * generator/Parameters.cs: fix off-by-1 in null term array marshaling. - -2008-02-06 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata: mark ApplyEmbeddedOrientation return as owned. - -2008-01-30 Mike Kestner <mkestner@novell.com> - - * generator/ClassBase.cs: null check ifaces in recursive method - and signal lookup. - -2008-01-29 Mike Kestner <mkestner@novell.com> - - * generator/ManagedCallString (Setup): use error param name instead - of hardcoding error. - -2008-01-29 Mike Kestner <mkestner@novell.com> - - * generator/VirtualMethod (CName): mangle the name. - * generator/SymbolTable.cs (MangleName): add 'remove' and 'foreach' - mappings. Should probably just get a C# keyword list and map all of - them instead of onesy twoseys. - Fixes for tnymail binding generation. - -2008-01-24 Lluis Sanchez Gual <lluis@novell.com> - - * glade/XML.custom: due to a recent Mono fix (bug #322762), - Type.GetFields does not return private fields from base classes - anymore, so the BindFields now has to go through the class - hierarchy to get all fields. - -2008-01-23 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: update version and tag 2.11.91. - -2008-01-22 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: expose an internal ToggleRef prop. - * glib/Signal.cs: use ToggleRef for lookups instead of Object. Add - a Free method and release connections and gchandles. - * glib/ToggleRef.cs: add signal hash and release signals on free. - -2008-01-17 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: remove ref from Objects hash prior to releasing it. - -2008-01-17 Mike Kestner <mkestner@novell.com> - - * glib/ToggleRef.cs: check for null reference in IsAlive. - -2008-01-17 Mike Kestner <mkestner@novell.com> - - * generator/Property.cs: missing Parent null check needed for direct - GLib.Object subclasses. Suggested by mario@gnome.cl. [Fixes #321536] - -2008-01-17 Mike Kestner <mkestner@novell.com> - - * sample/Assistant.cs: new Gtk.Assistant sample. - * sample/Makefile.am: hook in new sample. - -2008-01-11 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.12: update version to 2.11.90. - * configure.in.in: incorporate build service patch. - * glib/glib-sharp-2.0.pc.in: add cflags for new api.xml. - * glib/Makefile.am: install api.xml to correct dir. - -2008-01-07 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs: map "unsigned long" to LPUGen. - -2008-01-02 Mike Kestner <mkestner@novell.com> - - * gtk/MoveFocusHandler.cs: obsolete event types. - * gtk/TextView.custom: obsolete move-focus signal. - * gtk/Window.custom: obsolete move-focus signal. - Compat fixes for removal of signals from gtk+ API. [Fixes #350770] - -2007-12-17 Mike Kestner <mkestner@novell.com> - - * parser/gapi_pp.pl: parse 'typedef struct\n{' properly. - -2007-12-12 Mike Kestner <mkestner@novell.com> - - * generator/Parameters.cs: fix marshaling for ArrayCount params where - casting is required, like gsize/size_t count parameters. - -2007-12-11 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl: fix tightloop in single-line prop declarations. - -2007-12-06 Mike Kestner <mkestner@novell.com> - - * * : update to 2.12 API. - -2007-12-04 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs: add goffset mapping. - -2007-12-04 Mike Kestner <mkestner@novell.com> - - * configure.in.in: check for default off_t size - * generator/SymbolTable.cs: map off_t based on configure check. - * generator/Makefile.am: add OFF_T_FLAGS to compile. - -2007-12-03 Mark Probst <mark.probst@gmail.com> - - * generator/SymbolTable.cs: Added "where" to the list of mangled - names. - -2007-11-29 Mike Kestner <mkestner@novell.com> - - * parser/gapi_pp.pl: collapse embedded multiline function fields - to a single line. [Fixes #344853] - -2007-11-29 Mike Kestner <mkestner@novell.com> - - * generator/MethodBase.cs: move Name stuff from subclasses. - Check for (G|S)et<UpperCaseLetter> in new Has props. - * generator/Method.cs: - * generator/VirtualMethod.cs: refactor out Name stuff. Use - new Has(G|S)etterName props. - * pango/Pango.metadata: workaround Has/Hash collision with - the old broken getter check. [Fixes #344954] - -2007-11-29 Mike Kestner <mkestner@novell.com> - - * glib/Signal.cs: ignore GCHandles with null targets since - their object has been collected. [Fixes #344250 again] - -2007-11-28 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: take ref using method param to avoid - NREs. [Fixes #344250] - -2007-11-16 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: use toggle refs for all objects. - de-obsolete Data hash. Add internal Signals hash. - * glib/Signal.cs: switch to weak gchandles. - * glib/WeakObject.cs: kill. - -2007-11-16 Eskil Bylund <eskil@letterboxes.org> - - * gtk/ListStore.custom: - * gtk/TreeStore.custom: Implement InsertWithValues. - * gtk/Gtk.metadata: Deprecate the old generated method. - [Fixes #325040] - -2007-11-12 Mike Kestner <mkestner@novell.com> - - * sample/TreeModelDemo.cs: lt/gt typo bugfix [Fixes #333653] - -2007-11-12 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs: remove GCallback mapping. - * glib/GCallback.cs: kill, bad idea. - -2007-11-12 Mike Kestner <mkestner@novell.com> - - * glib/IOChannel.cs: IOChannel wrapper implementation. - * glib/Makefile.am: build new files. - * glib/Marshaller.cs: new string array marshaling methods. - * glib/Spawn.cs: g_spawn* wrapper implementation. - * sample/SpawnTests.cs: tests for the new GLib.Process class - and a cursory exercise of IOChannel for SpawnAsyncWithPipes. - -2007-11-09 Mike Kestner <mkestner@novell.com> - - * generator/Parameters.cs: support for null_term_array attribute. - -2007-11-08 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs: new null-terminated string[] marshaler from - Mono.Unix with adaptations by Michael Hutchinson. - -2007-11-02 Mike Kestner <mkestner@novell.com> - - * glib/SList.cs: - * glib/List.cs: add Array dup of object[] ctor since we - are passing typed arrays from generated code. - -2007-11-02 Mike Kestner <mkestner@novell.com> - - * generator/Method.cs: need to use on the Base method name to - lookup complements and determine if the method is a getter or setter - when an explicit interface method name is used. - -2007-10-24 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs: mappings for GCallback and GSourceFunc. - * glib/GCallback.cs: GCallback declaration. - * glib/Source.cs: GSourceFunc declaration. - -2007-10-24 Mike Kestner <mkestner@novell.com> - - * generator/VirtualMethod.cs: clean up compiler warning and duplicate - call. - -2007-10-24 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: generate an Implementor prop on the - adapters to obtain the underlying object. - -2007-10-22 Mike Kestner <mkestner@novell.com> - - * configure.in.in: add a win64 check and a compiler define for - handling win64 32bit longs. - * generator/LPGen.cs: use int to marshal on win64. - * generator/LPUGen.cs: use uint to marshal on win64. - * generator/SymbolTable.cs: remove fixme. - -2007-10-16 Mike Kestner <mkestner@novell.com> - - * gtk/CellRenderer.custom : marshal GTypes as IntPtr like the - generator does. - * gtk/Container.custom : ditto. [Fixes comment #8 on 327058] - -2007-10-15 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs : gen Handle props as overrides. - * glib/GInterfaceAdapter.cs : add abstract Handle prop. - * glib/Value.cs: add ctor (GInterfaceAdapter). - -2007-10-04 Peter Johanson <peter@peterjohanson.com> - - * gtk/Gtk.metadata: Make the public fields on Gtk.Rcstyle writeable. - -2007-10-04 Mike Kestner <mkestner@novell.com> - - * glib/DestroyNotify.cs: add CDeclCallback to the delegate. - * glib/Signal.cs: use DestroyHelper. - * gdk/Input.custom: use DestroyHelper. - * gtk/Quit.custom: remove new on DestroyHelper handler. - * gtk/TreeModelFilter.custom: remove new on DestroyHelper handler. - * gtk/TreeViewColumn.custom: remove new on DestroyHelper handler. - -2007-10-02 Mike Kestner <mkestner@novell.com> - - * generator/*.cs: implement the interfaces on the adapters too. - Generate an Implementor interface for users which exposes the - methods to implement. Register based on the Implementor sub-iface. - * gtk/*Adapter.custom: custom implementations for the custom - interface members. - * gtk/TreeIter.custom: make UserData public. - * sample/TreeModelDemo.cs: sample for implementing a TreeModel - interface. - -2007-10-01 Mike Kestner <mkestner@novell.com> - - * generator/OpaqueGen.cs: disable Copy generation fix until I can - figure out why it breaks DnD. - -2007-10-01 Mike Kestner <mkestner@novell.com> - - * gtk/TreePath.custom: use Marshal.Copy to copy indices array. - -2007-10-01 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs: add ctor (), which invokes CreateNativeObject - to allow direct subclasses that do all the registration automatically. - -2007-09-21 Mike Kestner <mkestner@novell.com> - - * generator/*.cs: add DefaultValue prop for obtaining a - sane value when we need to return a value but something bad has - happened such that we can't get a real value. Needed for iface - signal marshaling, among other places we're partially working - around it now. - -2007-09-19 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs: remove some dead code from a previous - implementation attempt. - -2007-09-19 Mike Kestner <mkestner@novell.com> - - * generator/VirtualMethod.cs: refactor delegate generation into - GenerateCallback and add [CDeclCallback] which was missing. - * generator/InterfaceGen.cs: kill GenerateDelegates. They are now - generated by VirtualMethod.GenerateCallback. - -2007-09-14 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs (GenInvoker): null check the sig field - and set it up. This can happen when generating the marshaling types - from dependent libraries instead of via the Generate method. - -2007-09-11 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata: virtual_method rules for GInterface generation. - * generator/ReturnValue.cs (ToNative): new method for the virtual - method generation. - * generator/Parameters.cs (FromNative): null guarding. - * generator/ManagedCallString.cs: rework for interface method - generation including callback and error param support. - * generator/CallbackGen.cs: Invoker support. new class that deals - with persistence of native and wrapper delegates in native to managed - callback method signatures. - * generator/VirtualMethod.cs: support for generation of interface - methods, and all the funky parameters that come with that. - * generator/InterfaceGen.cs: Fill out the adapter implementation. - * generator/MethodBody.cs: Initialize overload. Extend ThrowsException - to support GError outside the last parameter slot. - * glib/GInterfaceAttribute.cs: New attribute to mark interfaces and - obtain adapter type. - * glib/Object.cs (AddInterfaces): interface registration method. - * glib/GInterfaceAdapter.cs: New abstract class for interface - adapter generation. - * glib/Makefile.am: add new files. - -2007-09-11 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom (Destroy): add a null check to avoid - Gtk criticals. The destroy case seems to be problematic with - a bunch of existing code, so this turns it into a noop. - -2007-09-06 Mike Kestner <mkestner@novell.com> - - * AssemblyInfo.cs.in : add IgnoreClassInitializers attr to all. - * generator/ObjectGen.cs : add custom-attr generation for objects. - * glib/ClassInitializerAttribute.cs : obsolete - * glib/IgnoreClassInitializersAttribute.cs : new assembly attr - to avoid a blind GetMethods reflection. - * glib/Makefile.am : add files - * glib/TypeInitializerAttribute.cs : new attr to specify init - method to be run at type registration. - * gtk/Widget.custom : remove the ClassInitializerAttr. - * gtk/Gtk.metadata : add a custom-attr node to GtkWidget. - * sample/Subclass.cs : use the IgnoreClassInitializers attr. - -2007-08-14 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : kill a few "new" warnings in FileChooser - implementors. - -2007-08-14 Mike Kestner <mkestner@novell.com> - - * glib/ListBase.cs : add AllocNativeElement method and an - Append (object) method that uses it. - * glib/List.cs : add object[] ctor using new append method. - * glib/SList.cs : add object[] ctor using new append method. - These are needed to return G(S)List* values as virtual method - return values. - -2007-08-13 Mike Kestner <mkestner@novell.com> - - * generator/MethodBody.cs : finally kill the s/out ref/ref/ hack. - * generator/Parameter.cs : ditto. - -2007-08-13 Mike Kestner <mkestner@novell.com> - - * generator/ByRefGen.cs : implement IManualMarshaler. - * generator/Parameter.cs : use StructParameter for ByRefGen. - -2007-08-13 Mike Kestner <mkestner@novell.com> - - * generator/*.cs : switch to IntPtr marshaling for struct types - in the managed to native direction. - * gtk/*.custom : adjust to new gapi struct pinvoke sigs. - -2007-08-01 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : use Parameters.NativeCallbackSignature. - * generator/Ctor.cs : use Parameters.ImportSignature prop. - * generator/ImportSignature.cs : kill - * generator/MethodBase.cs : kill ImportSignature prop. - * generator/Method.cs : use Parameters.ImportSignature prop. - * generator/NativeCallbackSignature.cs : kill - * generator/Parameters.cs : add ImportSig and NativeCallbackSig. - * generator/Signal.cs : use Parameters.NativeCallbackSignature prop. - * generator/VirtualMethod.cs : use Parameters.ImportSignature prop. - -2007-07-31 Mike Kestner <mkestner@novell.com> - - * generator/Ctor.cs : Validate before generating and adjust protection - on a couple private methods. - * generator/Parameters.cs : remove unused var to kill warning. - -2007-07-30 Mike Kestner <mkestner@novell.com> - - * generator/MethodBody.cs : refactor finish logic into parameter. - * generator/Parameters.cs : refactor finish logic into parameter and - fix some failures to marshal ref params post call. - -2007-07-27 Mike Kestner <mkestner@novell.com> - - * generator/OpaqueGen.cs : only generate Copy override for methods - with no parameters. Fixes a gnome-sharp build problem. - -2007-07-26 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : beef up error message for signal vm parse. - [Fixes #82149] - -2007-07-24 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.10 : bump version and tag 2.10.2. - -2007-07-20 Mike Kestner <mkestner@novell.com> - - * gtk/Calendar.custom : workaround invalid states in widget when - raising month_changed signals. [Fixes #78524] - -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] - -2007-07-19 Mike Kestner <mkestner@novell.com> - - * generator/OpaqueGen.cs : override the new Copy vm if a Copy method - exists for the type. - * glib/Opaque.cs : add a virtual method to allow subclasses with - Copy methods to override. Use the method in GetOpaque for unowned - instantiations to try to obtain an owned instance. [Fixes #82037] - -2007-07-18 Mike Kestner <mkestner@novell.com> - - * gdk/EventExpose.cs : return a pointer from the get_area glue - pinvoke to avoid VS crashes on win32. - * gdk/glue/event.c : return a GdkRectangle* to avoid stack imbalance - on VS debugger. [Fixes #82098] - -2007-07-17 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : map TreeModelFilter ctor param to prop to - avoid subclass ctor exception. [Fixes #82115] - -2007-07-17 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : make GError** signatures fatal to - avoid compilation problem in gmime-sharp. - -2007-07-12 Mike Kestner <mkestner@novell.com> - - * generator/StructBase.cs : use typeof to pass type to PtrToStruct - to avoid an instantiation and method call. Duh. - -2007-07-10 Mike Kestner <mkestner@novell.com> - - * generator/ImportSignature.cs : use Parameter.NativeSignature - prop and refactor out some GError handling. - * generator/MethodBody.cs : Refactor logic into Parameters. - * generator/Parameters.cs : add ArrayParameter, ArrayCountPair, and - ErrorParameter subclasses to refactor spaghetti code in MethodBody. - -2007-07-03 Mike Kestner <mkestner@novell.com> - - * bootstrap-generic : use automake --foreign to make automake-1.10 - happy with gnu make function usage. - -2007-06-25 Mike Kestner <mkestner@novell.com> - - * gtk/StatusIcon.custom : present_icon is in the glue lib. - -2007-06-25 Ankit Jain <jankit@novell.com> - - * gdk/Gdk.metadata : hide Property.Get for manual impl. - * gdk/Property.custom : manually marshal the data param in Get. - -2007-06-19 Mike Kestner <mkestner@novell.com> - - * gdk/Property.custom : obsolete compat overload for Change(). - * gdk/Gdk.metadata : array attr for Property.Change (). - * gdk/Makefile.am : add custom file. - -2007-06-18 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.10 : bump version and tag. - -2007-06-05 Mike Kestner <mkestner@novell.com> - - * glib/ManagedValue.cs (ReleaseWrapper): new method. - * glib/Value.cs : release the ManagedValue wrapper to avoid leaks. - [Fixes #81799] - -2007-05-03 Wade Berrier <wberrier@novell.com> - - * 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) - -2007-04-28 Mike Kestner <mkestner@novell.com> - - * generator/NativeCallbackSignature.cs : - * generator/Signal.cs : don't use ref IntPtr in native callback sigs - for struct parameters. Use IntPtr and StructureToPtr. Fixes the - layout issues in MD introduced by the structure marshaling rework. - -2007-04-24 Aaron Bockover <abockover@novell.com> - - * gtk/Widget.custom (StyleGetProperty): return null if - gtksharp_widget_style_get_property returns FALSE (property - doesn't exist) [Fixes #81445] - - * gtk/glue/widget.c (gtksharp_widget_style_get_property): check - return of gtk_widget_class_find_style_property for NULL; function now - returns TRUE if spec is not NULL, FALSE otherwise - -2007-04-23 Brad Taylor <brad@getcoded.net> - - * gtk/TreePath.custom: Override Equals and compare based upon the - underlying indicies, instead of the object reference. - [Fixes #81398] - -2007-04-23 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs : add support for accessing generic struct boxed types - as objects. [Fixes #79224] - -2007-04-20 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : switch to NativeCallbackSignature. - * generator/GenBase.cs : add NativeCallbackType member. - * generator/IGeneratable.cs : add NativeCallbackType member. - * generator/ManagedCallString.cs : add guarded post call struct - marshaling back to the native struct. - * generator/NativeCallbackSignature.cs : new parallel to ImportSignature - but using NativeCallbackType instead of MarshalType. - * generator/Signal.cs : switch vm and sig marshaler callbacks to - NativeCallbackSignature. Perform guarding post call struct marshaling - back to the native struct. - * generator/Parameters.cs : add NativeCallbackType member. - * generator/SimpleBase.cs : add NativeCallbackType member. - * generator/StructBase.cs : add NativeCallbackType member using IntPtr - to support NULL handling. - * gtk/NodeCellDataFunc.cs : update native marshaler sig. - -2007-04-17 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide TreeModel.RowsReordered signal so we can do - a correct implementation while maintaining compat with the existing - broken "NewOrder" parameter. - * gtk/ListStore.custom : manual RowsReordered signal implementation. - * gtk/RowsReorderedHandler.cs : manual implementation for preserve compat - in the Args class. Adds NewChildOrder to replace the broken ChildOrder. - * gtk/TreeModel.custom : manual RowsReordered signal declaration. - * gtk/TreeModelFilter.custom : manual RowsReordered signal implementation. - * gtk/TreeModelSort.custom : manual RowsReordered signal implementation. - * gtk/TreeStore.custom : manual RowsReordered signal implementation. - [Fixes #78512] - -2007-04-17 Ben Motmans <ben.motmans@gmail.com> - - * doc/en/Gtk/Widget.xml: - removed documentation for internal method - -2007-04-17 Ben Motmans <ben.motmans@gmail.com> - - * gtk/Widget.custom: - StyleGetPropertyValue that returns a GLib.Value when StyleGetProperty cannot automatically cast the GLib.Value (eg: Gdk.Color) - [Fixes #81253] - * doc/en/Gtk/Widget.xml: - Documentation for the new StyleGetPropertyValue method and improved documentation for StyleGetProperty - * gtk/TreeView.custom: - OddRowColor and EvenRowColor properties - * doc/en/Gtk/TreeView.xml: - documentation for OddRowColor and EvenRowColor properties - -2007-04-12 Brad Taylor <brad@getcoded.net> - - * doc/en/Gtk/Widget.xml: Documentation for OnActivate, but only because - Mike asked so nicely. - -2007-04-12 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : do the Timeout switch in the finalizer - instead of in Dispose, where it can cause problems if people - override Dispose. - * generator/ObjectGen.cs : don't generate finalizers for every - subclass, just rely on the ~GLib.Object implementation. - -2007-04-12 Mike Kestner <mkestner@novell.com> - - * glib/Idle.cs : - * glib/Timeout.cs : don't add the CDeclCallback attr to the - public delegate type, since it causes a MissingMethod exception - on win32. - -2007-04-09 Brad Taylor <brad@getcoded.net> - - * gtk/glue/widget.c: - * gtk/Widget.custom: Bind activate_signal in GtkWidgetClass. - [Fixes #81343] - -2007-04-05 Mike Kestner <mkestner@novell.com> - - * glib/ToggleRef.cs : flush a few leftover changes from a - ToggleRef refinement. - -2007-03-15 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : generate try/catch blocks for - native to managed marshallers. [Fixes the rest of #80516] - -2007-03-08 Mike Kestner <mkestner@novell.com> - - * glib/Signal.cs : guard against NULL gchandles. - * gdk/Input.custom : add try/catch blocks to native callbacks. - * gtk/*.custom : ditto - * gtk/NodeStore.cs : ditto - -2007-03-08 Mike Kestner <mkestner@novell.com> - - * glib/*.cs : add try/catch blocks to native callback - methods for DestroyNotify, Copy/Free, and ToggleNotify handlers. - Raise UnhandledException events on catches. - -2007-03-06 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : add try/catch blocks to native callback - virtual method delegate too. - -2007-03-06 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : add try/catch blocks to native callback - delegates so that exceptions are not propagated across the native - boundary. Now raises GLib.ExceptionManager.UnhandledException. - * glib/ExceptionManager.cs : new class with UnhandledException - event and a static method to raise it. - * glib/Signal.cs : wrap the generic EventHandler callback delegate - with try/catch blocks and raise the UnhandledException event. - -2007-03-05 Mike Kestner <mkestner@novell.com> - - * gtk/Application.custom : set prgname in Init methods so - that WM_CLASS is more appropriate. Programs using Gnome.Program - already get a nice prgname, but Gtk.Application.Init apps were - getting a path instead of a filename without extension. - -2007-03-01 Brad Taylor <brad@getcoded.net> - - * gtk/Dialog.custom: obsolete old, improperly bound - SetAlternateButtonOrderFromArray. - * gtk/Gtk.metadata: fix binding of the - gtk_dialog_set_alternate_button_order_from_array. [Fixes #80706] - -2007-03-01 Mike Kestner <mkestner@novell.com> - - * generator/MethodBody.cs : handle set method conversion to - property for array parameters with preceding count params. - -2007-02-21 Peter Johanson <peter@peterjohanson.com> - - * gtk/glue/cellrenderer.c: revert to previous implementation of - _base_ functions to maintain backward-stability. [Fixes #77949] - -2007-02-16 Peter Johanson <peter@peterjohanson.com> - - * gtk/CellRenderer*.custom: new custom overrides for VMs. - * gtk/glue/cellrenderer.c: add GType parameters to the invoke methods - so we can identify the correct vtable to invoke from. - -2007-02-16 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : switch to ToggleRefs for all items created with - CreateNativeObject. This gets all managed subclasses, with a little - overhang into simple wrappers. - * glib/ToggleRef.cs : new class to manage the weak to strong ref - transitions as a native object flips between shared and unshared - ownership. - * gtk/Object.custom : revamp of the Destroyed signal handling. - * gtk/Gtk.metadata : hide destroy signal so we can deal with it - manually. [Fixes the reopen note of #72018.] - -2007-02-03 Mike Kestner <mkestner@novell.com> - - * gtk/StatusIcon.custom : obsolete overload for backcompat on - GetGeometry, and custom PresentMenu method to invoke new glue. - * gtk/glue/statusicon.c : glue method to connect to gtk_menu_popup - without having to go across the native/managed boundary multiple - times using gtk_status_icon_position_menu wrapper. - [Fixes #79500] - -2007-02-02 Brad Taylor <brad@getcoded.net> - - * gdk/Gdk.metadata: fix incorrect ref_count with Pixbuf's - RotateSimple method. - -2007-01-09 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : add PersistUntilCalled method generation - to the wrapper class. Holds a GCHandle for the wrapper which is Freed - when the delegate is invoked. - * generator/MethodBody.cs : add "async" case for delegate scope. Use - this scope to identify a callback parameter that needs to persist - until the native side calls back. Only valid for single-invoke - callbacks. - * gtk/Gtk.metadata : mark Print.RunPageSetupDialogAsync done_cb param - with the new async scope. - -2007-01-09 Mike Kestner <mkestner@novell.com> - - * sample/GtkDemo/DemoPixbuf.cs : use Marshal.Copy properly - to avoid expose crashes. Revised from patch provided by - Fabian Sturm. [#78262] - -2007-01-09 Mike Kestner <mkestner@novell.com> - - * sample/GtkDemo/DemoIconView.cs : use Gtk.Stock icons to avoid - crashes when the previous gnome icons aren't installed. [#78212] - -2007-01-09 Bart Deleye <bart.deleye@gmail.com> - - * parser/gapi_pp.pl : regex fix for tinymail parse. - -2007-01-09 Brad Taylor <brad@getcoded.net> - - * gdk/Pixbuf.custom: Properly dispose of PixbufLoaders when we're done - with them. - -2006-12-28 Brad Taylor <brad@getcoded.net> - - * sample/GtkDemo/Makefile.am: - * sample/GtkDemo/DemoPrinting.cs: Fix build on Win32. - -2006-08-21 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.10 : tag and bump version to 2.10.0. - -2006-08-10 Mikkel Kruse Johnsen <mikkel@linet.dk> - - * sample/GtkDemo/DemoPrinting.cs : new Gtk.Print sample. - * sample/GtkDemo/Makefile.am : build new source. - -2006-08-10 Mike Kestner <mkestner@novell.com> - - * pango/Pango.metadata : add library attr to pango_cairo methods. - * pango/pango-sharp.dll.config.in : add libpangocairo mapping. - -2006-08-10 Mike Kestner <mkestner@novell.com> - - * pango/Pango.metadata : some pango_cairo fixup. - * pango/pango-api-2.10.raw : regen with pangocairo.h API. - * sources/gtk-sharp-2.10-sources.xml : don't exclude pangocairo.h. - -2006-08-10 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : class parsing regex needs to handle protected - comments too. - -2006-08-07 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : remainder of new API massaging for existing - types. - * gtk/Printer.custom : new static method. - * gtk/TextBuffer.custom : serialization API implementations. - -2006-08-07 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : mark an out param in Style.LookupColor. - Some tweaks to duplicated label api. - -2006-08-07 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : markup for new Clipboard Rich text funcs. - * gtk/Clipboard.custom : manually implement RequestRichText and - WaitForRichText methods to deal with array marshaling and delegate - persistence. - -2006-08-04 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : a few tweaks to the 2.10 API found in doc/ - audit pass. - -2006-08-04 Mike Kestner <mkestner@novell.com> - - * gdk/Screen.custom : manually implement FontOptions property so - we can use reflection to access the internal Mono.Cairo ctor. - * gdk/Gdk.metadata : list marshaling, method-to-property renames, - and some hides form manual implementation. Hide - gdk_atom_intern_static_string wrapper since it is pointless outside - the context of C code. - -2006-08-03 Mike Kestner <mkestner@novell.com> - - * pango/pango-api-2.10.raw : regen for 1.12.x - * sources/Makefile.am : use pango-1.12.3 for parse - * sources/gtk-sharp-2.10-sources.xml : ditto - -2006-08-01 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : fix a couple of compat breaks against 2.8. - * gtk/TreeModelFilter.cs : hand implement ConvertChildIterToIter - to match the 2.8 version of the method. - -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. - -2006-07-29 Alp Toker <alp@atoker.com> - - * sample/GstPlayer.cs: Remove the 2002 GStreamer sample. gst-sharp has - long since found a new home. - -2006-07-28 Mike Kestner <mkestner@novell.com> - - * *: huge amounts of surgery to split off gnome-sharp module. - Clean out all the gnome related stuff from the auto* files. - make distcheck works on the leaner-meaner gtk-sharp module. - -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. - -2006-07-27 Mike Kestner <mkestner@novell.com> - - * gnome/PanelApplet.custom : hold UIVerbs in SetupMenu so the - callback delegates don't get GC'd. - -2006-07-15 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : regex fix needed for vfs 2.15.3 parse. - -2006-07-15 Mike Kestner <mkestner@novell.com> - - * sources/gtk-sharp-2.10-sources.xml : update to gnome 2.15.4 - sources for the 2.10 api build. - * sources/Makefile.am : ditto. - -2006-07-14 Mike Kestner <mkestner@novell.com> - - * sources/gtk-sharp-2.10-sources.xml : update to gtk+-2.10.0 - and pango-1.13.3 - * sources/Makefile.am : ditto. - * gtk/Gtk.metadata : some hides and renames to fix build. - * gdk/gdk-api-2.10.raw : refresh. - * gtk/gtk-api-2.10.raw : refresh. - * pango/pango-api-2.10.raw : refresh. - -2006-07-14 Mike Kestner <mkestner@novell.com> - - * sample/gnomevfs/Makefile.am : build fix for !ENABLE_GNOMEVFS. - -2006-06-21 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glade/HandlerNotFoundExeception.cs: - * glade/XML.custom: provide a better error when the signature of a - handler does not match the one of the event. - -2006-05-10 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.10 : strap for the new 2.9.0 API. - * generator/SymbolTable.cs : add GLib.InitiallyUnowned mapping. - * glib/InitiallyUnowned.cs : new floating class "stub". - * glib/Makefile.am : build new class. - * gdk/gdk-api-2.10.raw: parse from 2.9.0 - * gtk/Gtk.metadata: cleanup conflicts in 2.10 API. - * gtk/gtk-api-2.10.raw: parse from 2.9.0 - * pango/pango-api-2.10.raw: parse from 1.11.99 - * sources/Makefile.am : 2.10 parse setup and api-2.10 - * sources/gtk_tree_model_signal_fix-2.10.patch : 2.10 patch. - * sources/gtk-sharp-2.10-sources.xml : parse rules for 2.10 - -2006-05-08 Joe Shaw <joeshaw@novell.com> - - * glib/ValueArray.cs: Don't immediately free ValueArrays; queue - them up to be freed in the main thread by using a Timeout. This - fixes SMP deadlocks when the GValues contained therein aren't - threadsafe (like GDK resources). Fixes Novell bug #168650. - -2006-05-04 Peter Johanson <peter@peterjohanson.com> - - * gtk/glue/cellrenderer.c: Revert r59683, as it causes issues for - overrides calling base.GetSize (), etc. - -2006-05-03 Mike Kestner <mkestner@novell.com> - - * gdk/Drawable.custom : remove manual DrawPoints impl. - * gdk/Gdk.metadata : properly mark array and count params for - Drawable.DrawPoints. - -2006-05-02 Zac Bowling <zac@zacbowling.com> - - * docs/en/Gdk/Drawable.xml - * gdk/Drawable.custom - * gdk/Gdk.metadata : Fix Drawable.DrawPoints points param signature. - -2006-04-20 Peter Johanson <peter@peterjohanson.com> - - * gtk/glue/cellrenderer.c: Make GetSize, Render, etc behave correctly - for all cases. Fixes #77949. - -2006-04-15 Zac Bowling <zac@zacbowling.com> - - * README.generator : Updated with link to GAPI guide on Wiki - -2006-03-27 Mike Kestner <mkestner@novell.com> - - * gnomevfs/MimeType.cs : remove string from all pinvoke sigs. now - adheres to the const/non-const conventions specified in the vfs - headers. Fixes #77534. - -2006-03-27 Mike Kestner <mkestner@novell.com> - - * glib/ListBase.cs : deal with ownership of Opaque elements. - * glib/Marshaller.cs : add a hack to deal with Opaque ownership in - ListToArray marshaling. - -2006-02-28 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.* : update for 2.x.2 releases. - -2006-02-28 Mike Kestner <mkestner@novell.com> - - * pango/Context.custom : use ReadIntPtr (ptr, offset) for 64 bit. - * pango/FontFamily.custom : use ReadIntPtr (ptr, offset) for 64 bit. - * pango/FontMap.custom : use ReadIntPtr (ptr, offset) for 64 bit. - * pango/Layout.custom : use ReadIntPtr (ptr, offset) for 64 bit. - -2006-02-28 Mike Kestner <mkestner@novell.com> - - * gdk/Region.custom : 64 bit fix for ptr arithmetic. [Fixes #77658] - -Tue Feb 28 09:44:23 CET 2006 Paolo Molaro <lupus@ximian.com> - - * gdk/Pixbuf.custom: use correct type for buffer_size in - gdk_pixbuf_save_to_bufferv() (fixes bug# 77662). - -2006-02-16 Mike Kestner <mkestner@novell.com> - - * sample/gnomevfs/Makefile.am : make TestXfer conditional to a mono - build since it uses Mono.GetOptions. [Fixes #77497] - -2006-02-03 Mike Kestner <mkestner@novell.com> - - * sample/gnomevfs/TestVolume.cs : remove C# 2.0 usage. - -2006-02-03 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.* : update for 2.x.1 releases. - -2006-02-03 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : virtual method enum retvals must be case to - Enum before casting to their ultimate type. Also dispose retval - gvalues to avoid reference leaks. - -2006-01-31 Mike Kestner <mkestner@novell.com> - - * gnome/About.custom : fix some nullterm issues in subclass - construction as reported on irc by latexer. - -2006-01-31 Mike Kestner <mkestner@novell.com> - - * gtk/Dialog.custom : null check a parent arg. [Fixes #77400] - -2006-01-22 Mike Kestner <mkestner@novell.com> - - * configure.in.in : work around broken vte that doesn't - advertise its gtk+ dependency to pkg-config. [Fixes #77323] - -2006-01-21 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs : alias off_t to ssize_t as it is - signed according to harold. [Fixes #77016] - -2006-01-21 Mike Kestner <mkestner@novell.com> - - * gtk/RadioToolButton.custom : manually implement the GLib.List group - ctors. [Fixes #76992] - -2006-01-17 Mike Kestner <mkestner@novell.com> - - * gnome/Canvas.custom : add a ctor (bool is_aa) using the - construct-only prop. - [Fixes #77017] - -2006-01-17 Wade Berrier <wberrier@novell.com> - - * Have vte-sharp only depend on gtk-sharp instead of gnome-sharp - * sample/VteTest.cs: use gtk# calls instead of gnome# - * vte/vte-sharp-2.0.pc.in: depend on gtk-sharp instead of gnome-sharp - * configure.in.in: Allow vte to be build if gnome isn't going to be built - [Fixes #77182] - -2006-01-13 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs : subtract utc_offset when marshaling to time_t. - [Fixes #77244] - -2006-01-12 Mike Kestner <mkestner@novell.com> - - * sources/MethodBody.cs : use Utf8.GetByteCount for hidden len params. - [Fixes #77097] - -2006-01-11 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.8 : bump version to 2.8.0 - -2005-12-30 Alp Toker <alp@atoker.com> - - * Thread.cs: Add GLib.Thread.Supported, should be checked to avoid doing - Thread.Init() twice (Mono runtime initialises GLib threads itself, MS - runtime doesn't) - * glue/thread.c: g_thread_supported() is a macro, so needs glue - * glue/Makefile.am: - * glue/makefile.win32: Update makefiles with new glue file. - -2005-12-21 Lluis Sanchez Gual <lluis@novell.com> - - * generator/FieldBase.cs: Properly convert marshalled value - to native value. - * generator/CallbackGen.cs: Added parens to the result of ToNativeReturn, - since it may have problems with the cast. - -2005-12-16 John Luke <john.luke@gmail.com> - - * samples/CairoSample.cs: - * samples/GtkCairo.cs: - * samples/Makefile.am: update the cairo sample, fixes bug #76324 - -2005-12-16 Mike Kestner <mkestner@novell.com> - - * gdk/PixbufLoader.custom (InitFromAssemblyResource): move stream - access code outside the try block so only the Load is cleaned up with - the finally block. Add some other arg checking. [Fixes #76997] - -2005-12-13 Mike Kestner <mkestner@novell.com> - - * sources/Makefile.am : move to stable gtk 2.8 versions. - * sources/gtk-sharp-2.8-sources.xml : move to stable gtk 2.8 versions. - * */*.raw : regenerate. - * gdk/Gdk.metadata : hide a few gtk+ internal methods. - * gtk/Gtk.metadata : hide a win32 internal enum. - -2005-12-13 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.8 : bump version to 2.7.90. - -2005-12-13 Mike Kestner <mkestner@novell.com> - - * gconf/GConf/Makefile.am : add GAPI_CDECL_INSERT step. - * gconf/GConf.PropertyEditors/Makefile.am : add GAPI_CDECL_INSERT step. - -2005-12-13 Mike Kestner <mkestner@novell.com> - - * configure.in.in : check for mono-cairo.pc. - * Makefile.include : use AC_SUBST for cairo ref. - * gdk/Gdk.metadata : s/Cairo.Graphics/Cairo.Context. - -2005-12-12 Mike Kestner <mkestner@novell.com> - - * gnomevfs/Gnomevfs.metadata : mark some const strings. - [Fixes #76270] - -2005-12-12 Mike Kestner <mkestner@novell.com> - - * gdk/EventClient.cs : fix native long marshaling issue. Thanks to - ed@catmur.co.uk for the bug report and investigation. - [Fixes #76740] - -2005-12-12 Itamar Rogel <chastamar@yahoo.com> - - * NodeView.cs : add default ctor and NodeStore setter. - [Fixes #76827] - -2005-12-12 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : pass byte cnt for autogenerated string length - parameters. Thanks to Itamar Rogel for the report and a candidate - patch. [Fixes #76952] - -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] - -2005-12-10 Mike Kestner <mkestner@novell.com> - - * gdk/gdk-symbols.xml : add GrabBroken mapping. - * gdk/Event.cs : add GrabBroken to GetEvent. - * gdk/EventGrabBroken.cs : manual Event subclass. - * gdk/Gdk.metadata : hide new GrabBroken event. - * gdk/Makefile.am : add new source file. - -2005-12-09 Mike Kestner <mkestner@novell.com> - - * pango/Pango.metadata : 2.8 API tweaks - * gdk/Gdk.metadata : 2.8 API tweaks - * gtk/Gtk.metadata : 2.8 API tweaks - * gtk/IconView.custom : overloads for the weird ScrollToPath. - * gtk/Makefile.am : add custom - -2005-11-19 Mike Kestner <mkestner@novell.com> - - * generator/ManualGen.cs (CallByName): add null handling. - [Fixes #76540] - -2005-11-15 Ben Maurer <bmaurer@ximian.com> - - * gdk/Rectangle.custom: Fix up Intersect using p/invoke, per - miguel's request. - -2005-11-10 Mike Kestner <mkestner@novell.com> - - * bootstrap-2.6 - renamed from bootstrap - * bootstrap-2.8 : renamed from bootstrap-for-the-insane, removed - message of doom, require Gtk 2.8. Change version to 2.7.1. - -2005-10-31 Wade Berrier <wberrier@novell.com> - - * .pc and wrapper scripts: Use relative paths so gtk-sharp is - relocatable - -2005-10-19 Mike Kestner <mkestner@novell.com> - - * gtk/TextBuffer.custom : add some obsolete overloads for backward - compat with some not-completely-unusable 1.0.x methods. - -2005-10-19 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/Object.cs: remove the fast path. It was causing troubles with - MD. - -2005-10-19 Mike Kestner <mkestner@novell.com> - - * gnome/PrintContext.custom (SetFont): pass the font by handle, not - ref. - -2005-10-19 Mike Kestner <mkestner@novell.com> - - * bootstrap : bump version for 2.6.0. - * bootstrap-2.4 : bump version for 2.4.0. - -2005-10-08 Miguel de Icaza <miguel@novell.com> - - * gtk/Application.cs (Invoke): Use Timeout instead of Idle add to - trigger the event on the Gtk thread. - -2005-10-09 Mike Kestner <mkestner@novell.com> - - * Makefile.include : reference Mono.Cairo.dll. - * gdk/Gdk.metadata : add cairo_t symbol element. - -2005-10-09 Mike Kestner <mkestner@novell.com> - - * configure.in.in : string quote the POLICY_VERSIONS. - * Makefile.include : multiple policy fixes. - * */Makefile.am : multiple policy fixes. - -2005-10-08 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : handle enum return values GTypes. - * gtk/TextBuffer.custom : mark Text prop !GTK_SHARP_2_8. - [Fixes #75885] - -2005-10-08 Ben Maurer <bmaurer@ximian.com> - - * glade/XML.custom: Do not look at inherited custom - attrs. Increases performance. - - * glib/SignalAttribute.cs: Add AttributeUsage attr to increase - perf and compiler checking - -2005-10-07 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/MainContext.cs: added a Depth property to p/invoke g_main_depth. - * glib/Object.cs: - (Dispose): immediately call g_object_unref without queueing when - possible (MainContext.Depth > 0) and use Timeout.Add instead of Idle.Add - to get our unref callback scheduled more reliably. - -2005-10-05 Mike Kestner <mkestner@novell.com> - - * bootstrap : bump version for beta3. - * bootstrap-2.4 : bump version for beta3. - -2005-09-27 Mike Kestner <mkestner@novell.com> - - * glib/Opaque.cs : remove the Opaques hash. As f-spot demonstrated, - we cannot rely on a pointer continuing to point at the same type in - memory, since there is no destroy notification for most opaques. - * glib/Value.cs : use more explicit GetOpaque overload. - * gtk/Style.custom : use more explicit GetOpaque overload. - -2005-09-24 Christian Hergert <christian.hergert@gmail.com> - - * vte/Vte.metadata: Fix Vte.Terminal.SetColors to reflect proper mapping - to vte_terminal_set_colors. palette is now Gdk.Color[]. - * sample/VteTest.cs: Update to work with fixed parameter. - * doc/en/Vte/Terminal.xml: Update vte docs to reflect parameter fix. - -2005-09-23 Mike Kestner <mkestner@novell.com> - - * configure.in.in : expand glib-sharp-2.0.pc. - * glib/glib-sharp-2.0.pc.in : new pc file template. - * glib/Makefile.am : dist and install pc file. - * gtk/gtk-sharp-2.0.pc.in : Require glib-sharp-2.0. - -2005-09-21 Mike Kestner <mkestner@novell.com> - - * bootstrap* : expose POLICY_VERSIONS variable. - * configure.in.in : AC_SUBST new POLICY_VERSIONS. - * Makefile.include : build/install policy assemblies. - * policy.config.in : policy config skeleton. - * */Makefile.am : ditto. - -2005-09-19 Tambet Ingo <tambet@ximian.com> - - * glib/Opaque.cs: Set owned property in any case. Generated code - will set owned to false after unref. - -2005-09-15 Mike Kestner <mkestner@novell.com> - - * configure.in.in : make gtkhtml-3.8 check >= 3.8.0. - [Fixes #76119] - -2005-09-15 Mike Kestner <mkestner@novell.com> - - * glade/Glade.metadata : mark Interface.toplevels private to allow - manual implementation. - * glade/Interface.custom : add manual impl for Toplevels and obsolete - old toplevels impl. - * glade/Makefile.am : add new custom. - -2005-09-15 Mike Kestner <mkestner@novell.com> - - * parser/gapi-fixup.cs : warn on unmatched rules. reworked from a Dan - Winship patch. [Fixes #76088] - -2005-09-08 Dan Winship <danw@novell.com> - - * gtk/Gtk.metadata: Hide Gtk.Drag.SetIconDefault. Mark - Gtk.TreeView.GetVisibleRect's arg as "out". - - * gtk/Drag.custom: gtk_drag_set_icon_default(ctx) should translate - to Gtk.Drag.SetIconDefault(ctx), not Gtk.Drag.IconDefault = ctx. - - * gtk/TreeView.custom: add obsolete GetVisibleRect() - -2005-09-07 Mike Kestner <mkestner@novell.com> - - * bootstrap : bump version for beta2. - * bootstrap-2.4 : bump version for beta2. - -2005-09-07 Eric Butler <eric@extremeboredom.net> - - * gtk/NodeStore.cs : Add Clear() method - * doc/en/Gtk/NodeStore.xml : Add documentation for above method - -2005-09-07 Mike Kestner <mkestner@novell.com> - - * configure.in.in : check for monodoc sources dir and warn if we are - configuring for a different prefix. - * doc/Makefile.am : add install targets. - -2005-09-06 Mike Kestner <mkestner@novell.com> - - * gtk/NodeStore.cs : fix recursive emit of row_inserted. - -2005-09-02 Tambet Ingo <tambet@ximian.com> - - * glib/Object.cs: Clean disposed flag from resurrected objects. - -2005-09-02 Miguel de Icaza <miguel@novell.com> - - * gtk/Application.cs (Invoke): Add new overloads to easily invoke - methods on the executing thread. - -2005-09-01 Miguel de Icaza <miguel@novell.com> - - * gtk/Application.cs (Invoke): Add sugar to invoke a method on the - main thread. - -2005-09-02 Ben Maurer <bmaurer@ximian.com> - - * sample/NodeViewDemo.cs: take advantage of the stuff below - - * gtk/TreeNodeValueAttribute.cs: Allow on props - - * gtk/TreeNodeAttribute.cs: Obsolete column count - - * gtk/NodeStore.cs: Change this to not need the TreeNodeAttribute - column count. Handle fields as well as properties. - -2005-08-30 Mike Kestner <mkestner@novell.com> - - * gdk/Event.cs : add some null guarding to GetEvent. - [Fixes #75642] - -2005-08-30 Mike Kestner <mkestner@novell.com> - - * parser/gapi_pp.pl : ignore ifndef *_H_ lines like in 1.0.x. - [Fixes #75938] - -2005-08-30 Mike Kestner <mkestner@novell.com> - - * gtk/NodeStore.custom : recursively emit row_inserted for AddNode. - [Fixes #75853] - -2005-08-29 Mike Kestner <mkestner@novell.com> - - * gtk/Widget.custom : add overloads for Modify* without a Gdk.Color - param to reset color to default. [Fixes #75913] - -2005-08-28 Ben Maurer <bmaurer@ximian.com> - - * configure.in.in: Enable doc building without mono-tools being - built. - - * gtk/NodeSelection.cs: helper api - -2005-08-27 Peter Williams <peter@newton.cx> - - * gnome/Program.custom: Use a GLib.Argv in PersistentData to store - a handle to argv, so that the unmanaged strings aren't freed out - from under popt. This allows the popt context to actually be used. - -2005-08-26 John Luke <john.luke@gmail.com> - - * glib/Signal.cs: deal with obj.Handle == IntPtr.Zero - to avoid assertions - -2005-08-25 Mike Kestner <mkestner@novell.com> - - * configure.in.in : move GACUTIL check forward ahead of a use. - * Makefile.include : distcheck fixes - * glib/Makefile.am : distcheck fixes - * gtkdotnet/Makefile.am : distcheck fixes - -2005-08-25 Mike Kestner <mkestner@novell.com> - - * configure.in.in : add PLATFORM_WIN32 conditional. Borrow mono's - libtool s/cyg// hack. Improve/relocate System.Drawing check. - * Makefile.include : add gapi-cdecl-insert handling for win32. - * glib/Makefile.am : add gapi-cdecl-insert handling for win32. - * gtkdotnet/Makefile.am : s/-r:System.Drawing/-r:System.Drawing.dll/. - * sample/DrawingSample.cs : remove C# 2.0-isms. - * sample/Makefile.am : s/-r:System.Drawing/-r:System.Drawing.dll/. - -2005-08-25 Mike Kestner <mkestner@novell.com> - - * bootstrap : bump version to 2.5.90.99 - * bootstrap-2.4 : bump version to 2.3.90.99 - -2005-08-25 Mike Kestner <mkestner@novell.com> - - * sample/GtkDemo/DemoIconView.cs : remove C# 2.0-isms. - * sample/opaquetest/OpaqueTest.cs : remove C# 2.0-isms. - * sample/valuetest/ValueTest.cs : remove C# 2.0-isms. - * sample/PolarFixed.cs : remove C# 2.0-isms. - -2005-08-23 Ben Maurer <bmaurer@novell.com> - - * glib/Object.cs: Escape names and ensure stuff is unique. - -2005-08-23 Joe Shaw <joeshaw@novell.com> - - * generator/SymbolTable.cs: Add "unsigned" as a type - which maps to "uint". - - * parser/gapi2xml.pl: Handle "type const *" return types - as well. I think this is all of them! - -2005-08-23 Joe Shaw <joeshaw@novell.com> - - * parser/gapi2xml.pl: Fix a cut-and-paste error in handling - "type const *" fields. - -2005-08-23 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : handle foo const * fields. - * gnome/gnome-api-2.10.raw : regen. - -2005-08-23 Mike Kestner <mkestner@novell.com> - - * bootstrap-for-the-insane : restore the message of doom that was - removed during the "bootstrap-generic" reorganization. - -2005-08-22 Joe Shaw <joeshaw@novell.com> - - * parser/gapi2xml.pl: Fix a minor bug handling "type const *" - parameters. - -2005-08-22 Ben Maurer <bmaurer@novell.com> - - * gtk/TreeNode.cs: Add Interlocked.Increment rather than ++. This - makes it safe to create tree nodes in a worker thread as long as - you reparent them into the tree with another thread. Thanks to mk - for allowing a bit of threadedness in :-). - - * gtk/NodeView.cs: Fix leak here. r=mkestner - -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] - -2005-08-22 Dan Winship <danw@novell.com> - - * generator/Property.cs (Generate): Mark properties [Obsolete] if - they or their accessors are marked deprecated. (Affects - Gtk.Entry.Editable, Gtk.FontSelection.Font, - Gtk.Notebook.*TabBorder, Gtk.Object.UserData, and a bunch of old - Gtk.ProgressBar properties). - - * gtk/Gtk.metadata: Hide Entry.Editable. Mark Notebook.Homogeneous - deprecated. - - * gtk/Entry.custom: Implement Editable property with an Obsolete - pointing to IsEditable. - -2005-08-22 Dan Winship <danw@novell.com> - - * generator/CallbackGen.cs (Validate, MarshalType): if validation - fails, set MarshalType to "" to propagate that failure into - methods that have args of this type. [Fixes #75851] - -2005-08-15 Peter Williams <peter@newton.cx> - - * bootstrap-generic: New script, handles bootstrapping stuff generically - and saves bootstrap settings so we can regenerate configure.in from - configure.in.in. - - * bootstrap - * bootstrap-2.4 - * bootstrap-for-the-insane: Modify to use bootstrap-generic - - * Makefile.am (configure.in): Add a rule to run bootstrap.status to - regenerate configure.in if configure.in.in changes. - -2005-08-15 Mike Kestner <mkestner@novell.com> - - * bootstrap : update for 2.5.90 release. - * bootstrap-2.4 : update for 2.3.90 release. - -2005-08-15 Mike Kestner <mkestner@novell.com> - - * gtk/glue/makefile.win32 : s/.c/.o typo. - -2005-08-15 Mike Kestner <mkestner@novell.com> - - * pango/makefile.win32 : process symbols file at fixup target. - -2005-08-15 Mike Kestner <mkestner@novell.com> - - * sample/opaquetest/Makefile.am : make clean fixes - * sample/valtest/Makefile.am : make clean fixes - -2005-08-15 Dan Winship <danw@novell.com> - - * sample/opaquetest/Makefile.am (EXTRA_DIST): add missing files - (generated/*.cs): fix for srcdir!=builddir - * sample/valtest/Makefile.am (EXTRA_DIST): add missing files - (Valobj.cs): fix for srcdir!=builddir - -2005-08-15 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : hold strong refs for managed subclasses and - weakrefs for wrappers. - * gtk/Object.custom : don't hold managed refs here, they are now held - in GLib.Object. - -2005-08-11 Dan Winship <danw@novell.com> - - * 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. - -2005-08-11 Dan Winship <danw@novell.com> - - * generator/OpaqueGen.cs (Generate): - * generator/StructBase.cs (Generate): Add the [Obsolete] attribute - to deprecated structs/boxeds/opaques too. (Affects Gdk.Font, - Gtk.Arg, Gtk.ItemFactoryEntry, Gnome.IconData, and [in 2.6] - Gnome.Vfs.MimeAction) - -2005-08-09 Dan Winship <danw@novell.com> - - * configure.in.in: kill off all gda/gnomedb references. - (Henceforth gda# and gnomedb# will be part of gda and gnomedb. Or - maybe separate modules in Mono SVN. Not part of gtk-sharp though.) - - * Makefile.am (SUBDIRS): remove gda and gnomedb - - * gda/, gnomedb/: buh-bye - - * sources/Makefile.am: remove gda/gnomedb - - * sources/gda.patch, sources/gnomedb.patch: gone - -2005-08-09 Dan Winship <danw@novell.com> - - * generator/ClassBase.cs (Validate): Don't fully validate the - parent class and interfaces (because we don't want to see the - warnings about certain GtkWidget methods in every single library - that defines a widget, etc). Instead, use the new - ValidateForSubclass() method. - (ValidateForSubclass): only validate the signals - - * generator/InterfaceGen.cs (ValidateForSubclass): for interfaces - we need to validate the methods too. - - * generator/ObjectGen.cs (Generate): Check for interface method - collisions against the class's own methods too, not just its other - interfaces. Also, it's only a collision if the methods' signatures - have the same types. - - * generator/Method.cs (GenerateDeclCommon): Strip "Get"/"Set" even - in the context of "Gtk.TreeModel.GetNColumns" - - * generator/Signal.cs (GenDefaultHandlerDelegate): Use - "{0}_managed" rather than "obj" for the internal variable name, to - avoid compile problems with signals that have a parameter named - "obj". - - * generator/SymbolTable.cs (MangleName): mangle "internal" to - "_internal". - - * generator/CallbackGen.cs (GenWrapper): treat InterfaceGen return - values the same as ObjectGen - -2005-08-09 Dan Winship <danw@novell.com> - - * generator/OpaqueGen.cs (Generate): Tweak the generated Ref/Unref - a bit; only Ref the pointer if Owned is false (and then set it to - true), and vice versa for Unref. - - * glib/Opaque.cs (Opaque): set owned before setting Raw, so - that Raw will be reffed properly. - (GetOpaque): Fix this up to dtrt in all cases with refcounted - opaques. - - * gtk/TreeView.custom (GetPathAtPos): Use "GetOpaque(...)" rather - than "new TreePath()" - - * sample/opaquetest/*: regression test for opaque free/ref/unref - handling - - * sample/Makefile.am (SUBDIRS): add opaquetest - - * configure.in.in (AC_OUTPUT): add opaquetest files - -2005-08-04 Dan Winship <danw@novell.com> - - Change the way generatable validation works. Some generatable - properties can't be set until Validate-time (eg, Method.IsGetter), - but it's annoying for every potential user of those properties to - have to make sure it has Validated the generatable first. So now - we add an explicit Validate() step after everything is loaded but - before anything is Generated, so that at Generation time, - everything can be assumed to have been Validated. - - * generator/IGeneratable.cs: add "bool Validate()" - - * generator/CodeGenerator.cs (Main): after loading all of the - generatables, DeAlias the SymbolTable, Validate() all the - generatables, and discard any invalid ones. - - * generator/*.cs: Implement Validate() trivially in generatables - that didn't implement it before. Move Validate() calls from - Generate() to Validate(). Remove non-hierarchical Validate() - calls. - - * generator/SymbolTable.cs: GPtrArray is IntPtr, not IntPtr[] - -2005-08-04 Dan Winship <danw@novell.com> - - * gtk/TargetList.custom: add an operator for casting to - TargetEntry[], so you can use methods like - TargetList.AddTextTargets() in situations where you need a - TargetEntry[] rather than a TargetList. - - * gtk/glue/targetlist.c: glue for that - -2005-08-04 Mike Kestner <mkestner@novell.com> - - * generator/Ctor.cs : call Finish and HandleException for static ctor - method bodies. [Fixes #75493] - -2005-08-03 Mike Kestner <mkestner@novell.com> - - * bootstrap : use gnome and vfs 2.10 api. - * bootstrap-2.4 : use gnome and vfs 2.6 api. - * bootstrap-for-the-insane : use gnome and vfs 2.10 api for now. - * configure.in.in : substitute GNOME_REQUIRED_VERSION. - * gnome/gnome-api.raw : rename to gnome-api-2.6.raw. - * gnome/gnome-api-2.10.raw : new 2.10 parse. - * gnomevfs/gnome-vfs-api.raw : rename to gnome-api-2.6.raw. - * gnomevfs/gnome-vfs-api-2.10.raw : new 2.10 parse. - * gnomevfs/Gnomevfs.metadata : mark MimeApplication opaque. - * sources/Makefile.am : split gnome parse for 2.6/2.10. - * sources/gtk-sharp-2.4-sources.xml : parse GNOME 2.6. - * sources/gtk-sharp-2.6-sources.xml : parse GNOME 2.10. - * sources/gtk-sharp-2.8-sources.xml : parse GNOME 2.10 for now. - -2005-08-02 Dan Winship <danw@novell.com> - - * generator/Property.cs (Generate): cast GLib.Values to - System.Enum before casting them to an enum type, to fix the build - with csc 1.1. - -2005-07-29 Dan Winship <danw@novell.com> - - 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. - -2005-08-01 Todd Berman <tberman@off.net> - - * gtk/Gtk.metadata: Change the Gtk.Style.Paint* methods to use a - Gdk.Drawable instead of a Gdk.Window - * doc/en/Gtk/Style.xml: Update the documentation for the above - change. - -2005-07-28 Mike Kestner <mkestner@novell.com> - - * bootstrap-for-the-insane : beginnings of 2.8 binding. - * */*-api-2.8.raw : 2.8 api files. - * gdk/Gdk.metadata : work around #define used in Pixbuf props in 2.7. - * parser/gapi2xml.pl : collision guarding for privatestruct defs. - * sources/gtk-sharp-2.8-sources.xml : parse for 2.8. - * sources/Makefile.am : api-2.8, get-2.8-sources, etc... - -2005-07-28 Dan Winship <danw@novell.com> - - * sources/gtk-sharp-2.4-sources.xml: - * sources/gtk-sharp-2.6-sources.xml: exclude a bunch of - gnome-print stuff that is not part of gnome-print's public API. - - * gnome/gnome-api.raw: regen - - * gnome/Gnome.metadata: remove some no-longer-needed metadata - - * gnome/GPFontEntry.custom: - * gnome/GPPath.custom: no longer needed - - * gnome/FontFamily.cs: moved from FontFamily.custom, since there's - no longer any non-custom portion of this. - -2005-07-27 Dan Winship <danw@novell.com> - - * gtk/ComboBoxEntry.custom: add an "Entry" property to cleanly - fetch the ComboBoxEntry's Gtk.Entry - -2005-07-27 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl (addParamsElem): deal with G_CONST_RETURN in - params... some functions use that to mark const "out" params. In - fact, let's use it as a hint to mark them pass_as="out" too... - - * pango/pango-api-2.4.raw: - * pango/pango-api-2.6.raw: - * gtk/gtk-api-2.6.raw: Regen, fixing pango_script_iter_get_range - and gtk_image_get_icon_name. - - * pango/Pango.metadata: - * pango/ScriptIter.cs: Alas, exposing GetRange makes it clear that - PangoScriptIter is really weird and we weren't wrapping it - correctly before anyway, so mark the whole thing hidden and wrap - it by hand. - -2005-07-25 Mike Kestner <mkestner@novell.com> - - * gnome/Gnome.metadata : mark IconList.GetIconFilename retval const. - [Fixes #75530] - -2005-07-21 Dan Winship <danw@novell.com> - - * glib/Value.cs: Obsolete the EnumWrapper and UnwrappedObject - constructors and casts. Add a new Enum cast. - (Val): Handle Pointer values. Change the handling of Enum/Flags - values to return the value directly rather than returning an - EnumWrapper. Remove the Char (ie, "byte") handling since there - aren't any char properties in all of gtk-sharp and the generator - mistakenly converts them to strings anyway. - - * glib/EnumWrapper.cs: - * glib/UnwrappedObject.cs: Mark these Obsolete. - - * glib/glue/type.c (gtksharp_get_parent_type, - gtksharp_get_type_name_for_id): - * glib/glue/value.c (gtksharp_value_get_value_type): Remove some - unneeded glue methods. - - * generator/Ctor.cs (Generate): - * generator/Property.cs (Generate): Simplify the enum and object - property glue to not use EnumWrapper or UnwrappedObject. - - * sample/valtest/*: a regression test for GLib.Value - - * configure.in.in: add sample/valtest - -2005-07-21 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl (parseInitFunc): handle interface properties - as well as class properties - - * gtk/gtk-api-2.4.raw: - * gtk/gtk-api-2.6.raw: Regen (adding properties to GtkFileChooser). - - * generator/Property.cs (GenerateDecl): new method to generate - just a property declaration (for an interface). - (Generate): Add an "implementor" arg as with Method.Generate. - - * generator/InterfaceGen.cs (Generate): Generate properties. Also, - validate methods *before* checking if they should be ignored, - since certain Method properties aren't set until Validate-time. - - * generator/*.cs: misc minor changes/reorg for the above. - -2005-07-19 Todd Berman <tberman@off.net> - - * gtk/TreeSelection.custom: Add an overload for GetSelected to remove - the need to always pass in that damn TreeModel. - * doc/en/Gtk/TreeSelection.xml: Add documentation for the new - overload. - -2005-07-19 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl (addParamsElem): change the handling of - anonymous function pointer types in method signatures. Before, we - added a <callback> child to the <parameters> node, but the - generator just ignored it. Now we add the callback (with a made-up - name) to the toplevel node, and add an ordinary <param> node - referencing it to the <parameters> node. Also, if the last param - of the callback is a gpointer, rename it from "arg#" to "data" so - it will be treated correctly (as the user data passed from the - calling method). [Fixes #66241] - - * art/art-api.raw: - * gdk/gdk-api-2.4.raw: - * gdk/gdk-api-2.6.raw: Regen - - * generator/Parameters.cs (IsHidden): loosen the definition of - hideable user_data; it doesn't have to occur at the end of the - parameter list, as long as there's a callback arg before it. - - * generator/MethodBody.cs (GetCallString): Use Parameters.IsHidden - to decide whether or not to squash user_data params, rather than - trying to duplicate its logic. As a side effect, this also causes - a handful of methods that take non-hidden IntPtr arguments to - start actually passing those arguments to C rather than always - passing IntPtr.Zero. - - * generator/Method.cs (Equals, GetHashCode): Remove unnecessary - and possibly erroneous hashing overrides. - - * gtk/Gtk.metadata: Hide Gtk.Container.ForeachFull, since it's - useless and wasn't in gtk# 1.0 - - * gtk/Menu.custom (Popup): - * gtk/TextIter.custom (ForwardFindChar, BackwardFindChar): - * gnome/App.custom (CreateMenusInterp, InsertMenusInterp, - CreateToolbarInterp): - * gnome/Client.custom (RequestInteractionInterp): - * gnome/Popup.custom (MenuDoPopupModal, MenuDoPopup): Add - [Obsolete] compat overloads for methods that have now lost a - useless IntPtr. - -2005-07-19 Dan Winship <danw@novell.com> - - * generator/Parameters.cs: Remove the AllowComplexRefs flag. - (They're always allowed now.) - - * generator/Signal.cs (GenVirtualMethod): Fix up the use of CSType - vs MarshalType in the ref/out-handling code so that this can - marshal any type. - -2005-07-18 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl: Change a few instances of - "last if ($line =~ /^}/);" to - "last if ($line =~ /^(deprecated)?}/);" to prevent runaway - parsing (in particular in libgnomeui). - - * sources/gtk-sharp-2.4-sources.xml: - * sources/gtk-sharp-2.6-sources.xml: exclude a handful of - libgnomeui files that were omitted in gtk# 1.0 due to the parser - bug, but which are entirely deprecated anyway. (Some of them - showed up in earlier 1.9/2.4/2.6 releases but are going away again - now.) - - * gnome/gnome-api.raw: Regen - - * gnome/Gnome.metadata: Hide a few more things that should be - hidden, remove a few rules that aren't needed any more. Keeping - hiding GnomeIconTheme though and using the old by-hand IconTheme - for the moment, since the by-hand one isn't compatible with the - autogenerated one. - - * gnome/IconData.cs: kill this, use the autogenerated version - -2005-07-13 Dan Winship <danw@novell.com> - - * sources/gtk-sharp-2.4-sources.xml: - * sources/gtk-sharp-2.6-sources.xml: remove some gnome-vfs files: - gnome-vfs-method and gnome-vfs-transform, because they're - internal/part of the module API, and gnome-vfs-file-size.h, - because it's generated and shouldn't be in the source tarball (and - we don't parse it right anyway). - - * gnomevfs/gnome-vfs-api.raw: Regen - - * gnomevfs/gnomevfs-symbols.xml: add GnomeVFSFileOffset - - * gnomevfs/Gnomevfs.metadata: remove a whole bunch of callback - types that are only used from methods and structs that we hide. - -2005-07-08 Mike Kestner <mkestner@novell.com> - - * */*.raw : regen. - * parser/gapi2xml.pl : access comment doesn't have to start at - beginning of line. - -2005-07-08 Mike Kestner <mkestner@novell.com> - - * pango/*.raw : regen. - * sources/gtk-sharp-2.4-sources.xml : exclude some xft and fc files. - * sources/gtk-sharp-2.6-sources.xml : exclude some xft and fc files. - -2005-07-07 Dan Winship <danw@novell.com> - - * gnome/Gnome.metadata: opaquify ModuleInfo and hide the types - that are only used inside ModuleInfo, so we don't marshal the - function pointers into (incorrect) delegates. - - * gnome/Modules.cs: - * gnome/Program.custom: update for ModuleInfo being a class rather - than a struct now - -2005-07-02 Mike Kestner <mkestner@novell.com> - - * generator/StructField.cs : fix name exception throw conditional. - -2005-07-02 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : implement new IAccessor iface so that - callback fields on structs can now be accessed. - * generator/ClassBase.cs : remove/abstract some methods incorrectly - located here. - * generator/ClassGen.cs : implement methods previously inherited from - ClassBase incorrectly. - * generator/HandleBase.cs : new base class for native ptr wrappers. - Implements new IAccessor interface and code moved from ClassBase. - * generator/IAccessor.cs : new iface to generate field/prop accessors. - * generator/InterfaceGen.cs : derive from new ObjectBase. - * generator/LPGen.cs : implement IAccessor. - * generator/LPUGen.cs : implement IAccessor. - * generator/ObjectBase.cs : new base class for Object/Iface types. - * generator/ObjectGen.cs : derive from new ObjectBase. - * generator/OpaqueGen.cs : derive from HandleBase. - * generator/StructField.cs : refactor Generate method using new - IAccessor interface. - * */*.custom : add obsolete impls for some existing c_cased struct - field accessors that are now StudlyNamed. - -2005-07-02 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : remove an old workaround that put - the native wrapper class into the implementor's *Sharp namespace. - Use new ImportSignature sig. - * generator/ImportSignature.cs : don't mangle the callback wrapper - namespace any more. Remove impl_ns ctor param and field. - * generator/MethodBase.cs : use new MethodBody and ImportSignature - ctor sigs. - * generator/MethodBody.cs : drop the impl_ns ctor param. - * generator/Signal.cs : use new ImportSignature ctor sig. - * generator/VirtualMethod.cs : use new ImportSignature ctor sig. - -2005-07-01 Mike Kestner <mkestner@novell.com> - - * generator/Parameters.cs : init allow_complex_refs to true to fix - build. - -2005-06-30 Dan Winship <danw@novell.com> - - * generator/Parameters.cs (AllowComplexRefs): new property for - whether or not to allow "complex" ref/out args. - (Validate): update for that - - * generator/Signal.cs: set AllowComplexRefs false on the params. - (Validate): fix the messages - (GenCallback, GenEventHandler): properly handle ref/out args, by - manually pointerifying them (except for boxed args, which are - already pointers). - - * glib/Marshaller.cs (StructureToPtrAlloc): Rename from - PtrToStructureAlloc, since it wraps Marshal.StructureToPtr. - -2005-06-28 Mike Kestner <mkestner@novell.com> - - * gtk/ComboBox.custom : add ctor (string[]). - * gtk/ComboBoxEntry.custom : add ctor (string[]). - * sample/test/TestComboBox.cs : simple new ComboBox tester. - * sample/test/WidgetViewer.cs : button for simple new ComboBox tester. - -2005-06-27 Mike Kestner <mkestner@novell.com> - - * gnome/CanvasBpath.custom : a BPath property to wrap the ugly Bpath - IntPtr prop. [Fixes #75381] - -2005-06-24 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata : couple of small api cleanups. - -2005-06-24 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : remove the one reference to FileChooserEmbed. - * gtk/gtk-api-2.*.raw : regen. - * sources/gtk-sharp-2.*-sources.xml : exclude FileChooserEmbed files. - -2005-06-23 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs : support owned and elements_owned for lists. - * glib/List.cs : add ctor overloads for memory mgmt. - * glib/ListBase.cs : add ctor overloads for memory mgmt. Dispose - elements if specified. - * glib/SList.cs : add ctor overloads for memory mgmt. - * gnome/Gnome.metadata : unhide and generate a List prop. - * gnomevfs/Gnomevfs.metadata : unhide and generate a List prop. - * gtk/FileChooser.custom : new. add hidden props. - * gtk/FileChooserButton.custom : new. impl hidden props. - * gtk/FileChooserDialog.custom : remove some List props and use the - GLib.Marshaller for the remaining ones.. - * gtk/FileChooserWidget.custom : remove some List props and use the - GLib.Marshaller for the remaining ones.. - * gtk/Gtk.metadata : unhide and let the generator do some List props. - -2005-06-23 Mike Kestner <mkestner@novell.com> - - * gconf/GConf/Client.cs : support add/remove of a single notify handle - to multiple directories. [Fixes #55877] - -2005-06-22 Mike Kestner <mkestner@novell.com> - - * sample/GladeTest.cs : add a menu item signal connect to test for the - problem described in bug#74946. - * sample/test.glade : add menubar. - -2005-06-22 Mike Kestner <mkestner@novell.com> - - * sample/GtkDemo/DemoHyperText.cs : replace PersistentData usage that - breaks on csc. - * sample/GtkDemo/DemoTreeStore.cs : fix a 2.0 usage. - -2005-06-22 Mike Kestner <mkestner@novell.com> - - * generator/ManagedCallString.cs : don't assume ref for structs. - * generator/VMSignature.cs : don't assume ref for structs. - -2005-06-21 Mike Kestner <mkestner@novell.com> - - * generator/ConstStringGen.cs : override ToNativeReturn (). - * generator/ClassBase.cs : use fully qualified interface names for - conflicting implementations. - -2005-06-20 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : fix const foo * const * fields/params. - [Fixes #75266] - -2005-06-17 Mike Kestner <mkestner@novell.com> - - * Makefile.include : add included apis as deps on the generation - target to force regen if dependency lib api changes. - * pango/Analysis.custom : new custom to implement the ExtraAttrs - property. [Fixes #74668] - * pango/Makefile.am : add new custom file. - -2005-06-17 Mike Kestner <mkestner@novell.com> - - * bootstrap : use assembly version 2.6.0.0. - * bootstrap-2.4 : use assembly version 2.4.0.0. - * configure.in.in : substitute the assembly version. - -2005-06-14 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : add nodes for all the *Set props on TextTag. - [Fixes #75219] - -2005-06-10 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl (addPropElem): Distinguish CONSTRUCT ("must - be set at construct time") and CONSTRUCT_ONLY ("can only be set at - construct time") properties, rather than marking them all - "construct-only". - - * gnome/gnome-api.raw: - * gtk/gtk-api-2.4.raw: - * gtk/gtk-api-2.6.raw: Regen, causing a few formerly-read-only - properties to become writable. - -2005-06-10 Mike Kestner <mkestner@novell.com> - - * glade/XML.custom : add a try block on field autoconnect to make it - easier to catch type mismatches and such. Suggestion from Gonzalito. - -2005-06-09 Lluis Sanchez <lluis@novell.com> - - * glib/Marshaller.cs: Added null check in FilenamePtrToString. - -2005-06-08 Mike Kestner <mkestner@novell.com> - - * generator/SimpleBase.cs : off-by-one in namespace join. - * glib/ListBase.cs : support IntPtr element_type. - * gnomevfs/FileInfo.cs : make it ManualGen friendly. - * gnomevfs/*.cs : rework for FileInfo api changes. - * gnomevfs/Gnomevfs.metadata : make FileInfo a manual symbol. - * gnomevfs/Uri.custom : rework for FileInfo api changes. - * gnome/Makefile.am : add gnomevfs dependency to pick up some more api - symbols. - * gnome/gnome-sharp-2.0.pc.in : advertise the vfs dep. - [Fixes #71060] - -2005-06-08 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs : don't write a sem in FromNative. - * glib/ListBase.cs : handle GLib.Object explicit element types. - * glib/Marshaler.cs : only copy lists if Count > 0. - * gtk/Gtk.metadata : unhide Window.ListToplevels with a proper element - type for automatic list to array marshaling. - * gtk/Window.custom : kill manual ListToplevels impl. - -2005-06-08 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs : improved list to array marshaling. - * glib/Marshaller.cs : added ListToArray (). - * gnomevfs/Gnomevfs.metadata : mark element_type on - Mime.GetAllApplications. [Fixes #71888] - -2005-06-06 Mike Kestner <mkestner@novell.com> - - * generator/ImportSignature.cs : fix native delegate namespacing hack. - * gnomevfs/gnome-vfs-api.raw : regen. - * gnomevfs/Gnomevfs.metadata : replace all the type renames with a - namespace rename. remove-node several manually implemented callback - types and broken generated types for now. - * gnomevfs/Async.cs : use Opaque.Handle. - * gnomevfs/Handle.cs : kill. replaced by generated GLib.Opaque type. - * gnomevfs/Makefile.am : kill Handle.cs. - * gnomevfs/Sync.cs : use Opaque.Handle. - * sources/gtk-sharp-2.6-sources.xml : s/Gnome.Vfs/GnomeVFS. - -2005-06-06 Mike Kestner <mkestner@novell.com> - - * Makefile.include : depend on gapi-fixup.exe for the api target. - * parser/gapi-fixup.cs : remove-node rule handling. - -2005-06-06 Dan Winship <danw@novell.com> - - * sample/GtkDemo/DemoRotatedText.cs (RotatedTextExposeEvent): Use - Gdk.PangoRenderer.GetDefault() like the C gtk-demo rather than - creating a new Gdk.PangoRenderer. [Fixes #74865] - - * gdk/Gdk.metadata: fix return type of Gdk.PangoRenderer.GetDefault - - * glib/GType.cs (cctor): call g_type_init(). (Avoids debug spew - when monodocer updates doc/en/GLib/GType.xml.) - -2005-06-02 Mike Kestner <mkestner@novell.com> - - * gtk/gtk-api-2.6.raw : regen. - * parser/gapi_pp.pl : add G_DEFINE_TYPE_WITH_CODE handling. - * parser/gapi2xml.pl : add G_DEFINE_TYPE_WITH_CODE parsing. - [Fixes #74833] - -2005-06-02 Mike Kestner <mkestner@novell.com> - - * glib/ListBase.cs : add a nested class to support filename encoded - string element marshaling. - * gtk/Gtk.metadata : mark the filenames and folders as filename - encoded. - * gtk/FileChooserDialog.custom : use new ListBase.FilenameString type - for list element type of filenames and folders. - * gtk/FileChooserWidget.custom : use new ListBase.FilenameString type - for list element type of filenames and folders. - [Fixes #72701] - -2005-06-02 Mike Kestner <mkestner@novell.com> - - * generator/ConstFilenameGen.cs : new generatable for filename encoded - const string marshaling - * generator/Makefile.am : add new file - * generator/SymbolTable.cs : add new gfilename types. - * glib/Marshaller.cs : add new filename-encoded string marshalers. - * gtk/FileSelection.custom : use FilenamePtrToString to marshal. - * gtk/Gtk.metadata : map the FileSelector filename types to my new - imaginary gfilename type. [Fixes #74963] - -2005-06-02 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom : only connect to Destroyed for managed subclasses - and let the wrappers get disposed by the GC. - -2005-06-01 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs : handle enum/flags types in Val. - [Fixes #75112] - -2005-06-01 Dan Winship <danw@novell.com> - - * glib/Value.cs: Add a constructor and an explicit cast for - string[] (using a G_TYPE_STRV boxed value). - - * generator/SymbolTable.cs (SymbolTable): Map GStrv to string[]. - (The mapping relies on the above GLib.Value magic, so it only - works correctly for properties, but that's ok, because GStrv isn't - a real type anyway and only shows up in the api files for - G_TYPE_STRV properties.) Makes the Gtk.AboutDialog Artists, - Authors, and Documenters properties show up. - - * gtk/Gtk.metadata: hide - AboutDialog.Get/SetArtists/Authors/Documenters, which can't be - used to implement the Artists/Authors/Documenters properties, - because the generated code doesn't know to NULL-terminate the - arrays. - -2005-05-31 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : rework the weakref release mechanism to avoid a - couple "resurrection" issues. - -2005-05-25 Mike Kestner <mkestner@novell.com> - - * configure.in.in : remove crosspkgdir arg that causes trouble with - newer pkgconfigs. - -2005-05-24 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl: Make the enum value parser do the right - thing with parenthesized values ("FOO = (1 << 2)") and within-type - aliases ("GTK_ANCHOR_N = GTK_ANCHOR_NORTH"). Make it intentionally - do the wrong thing with unparsable values (outputting them as-is - into the api file) so that we are forced to fix them with metadata - rather than silently getting incorrect values. - - * gdk/gdk-api-2.4.raw: - * gdk/gdk-api-2.6.raw (PixdataType): Now recognized as flags, - not enum - - * gtk/Gtk.metadata: hide the enums ArgFlags and RcTokenType (which - are not used by any wrapped API, and which formerly contained - entirely wrong values). - - * gtk/gtk-api-2.4.raw: - * gtk/gtk-api-2.6.raw (AnchorType, SelectionMode): update with - values for aliases - - * gnome/Gnome.metadata: fix value of Gnome.PrintButtons.Cancel - - * gnome/gnome-api.raw (PrintUnitBase, PaperSelectorFlags, - PrintDialogFlags, PrintDialogRangeFlags): Now recognized as flags, - with values. - -2005-05-24 John Luke <john.luke@gmail.com> - - * configure.in.in: remove doc/updater/Makefile to fix build - -2005-05-23 Mike Kestner <mkestner@novell.com> - - * configure.in.in : add monodocer-fu. - -2005-05-21 Mike Kestner <mkestner@novell.com> - - * audit : add a compatibility auditing framework. - * audit/base/*.apiinfo : initial checkin of 1.0.10 API for diffs. - * audit/extract-missing.cs : XPath tool to grab presence='missing'. - * audit/get-apidiff.pl : diffs api-infos to the base. - * audit/get-apiinfo.pl : drives a module-wide api-info extraction. - * audit/get-missing.pl : drives the extract-missing.exe tool. - * audit/makefile : all and check targets. no dist support. - * audit/mono-api-info.cs: copied from mcs/tools/corcompare. - * audit/mono-api-diff.cs: copied from mcs/tools/corcompare. - -2005-05-17 Jordi Mas i Hernandez <jordi@ximian.com> - - * gnome/About.custom: fixes exception when passing null argument - -2005-05-16 Mike Kestner <mkestner@novell.com> - - * makefile.win32 : remove 1.0 csc, default to 1.1. - * gtk/TreeEnumerator.cs : remove C# 2.0 usage. - * gtk/glue/makefile.win32 : remove duplicated cellrenderer.o. - * vte/glue/Makefile.am : use VTE_DEPENDENCIES_CFLAGS. - * */makefile.win32 : add glue args to generation target. - -2005-05-16 Mike Kestner <mkestner@novell.com> - - * configure.in.in : expand new vte glue makefile. - * vte/glue/Makefile.am : add GTK_CFLAGS to fix build. Remove - win32 dist files. - -2005-05-16 Dan Winship <danw@novell.com> - - * generator/StructBase.cs: update field-generation logic a bit - - * generator/CodeGenerator.cs: add a --glue-includes flag - - * generator/GenerationInfo.cs: Accept glue_includes value from - Main and output it to the glue_filename. - - * generator/FieldBase.cs (Ignored): handle more ignorable cases. - (CheckGlue): New method to figure out what kind of glue we'll need - for a field. - (GenerateImports): generate appropriate imports per CheckGlue. - (GenerateGlue): Generate C glue for accessing a struct field; - either a fully-C-based accessor, or a method to just return the - field's offset in the struct. - (Generate): Use the generated glue to read the field. - - * generator/PropertyBase.cs (CType): if the field is a single bit, - set its type to gboolean. - - * generator/ObjectGen.cs (Generate): - * generator/OpaqueGen.cs (Generate): Call GenFields. - - * generator/StructField.cs: Use FieldBase's glue-generation code - to handle bitfields. [#54489] - - * generator/ObjectField.cs: Generates accessors for public fields - of objects and opaque structs. [#69514] - - * generator/ClassBase.cs (ClassBase): Parse <fields> nodes and - create ObjectField objects. - (GenFields): Output field properties - (IgnoreMethod): Ignore Get/Set methods that duplicate fields - - * generator/Makefile.am (sources): update - - * {gdk,gnome,gtk,pango}/*.metadata: Mark some additional fields as - public. Rename/retype some fields for consistency with earlier - hand-coded bindings. - - * {gdk,gnome,gtk,pango}/*.custom: Remove custom methods that can - now be autogenerated. - - * {gdk,gnome,gtk,pango}/glue/*.c: Remove glue methods that can now - be autogenerated - - * {gdk,glade,gnome,gtk,pango,vte}/Makefile.am - * {gdk,glade,gnome,gtk,pango,vte}/glue/Makefile.am - * {gdk,gnome,gtk,pango}/glue/makefile.win32: Update - -2005-05-15 Ben Maurer <bmaurer@ximian.com> - - * bootstrap (GTK_SHARP_VERSION): Bump so that Todd's md tarballs - work. Not yet tagged... - -2005-05-13 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom : hold refs for all managed subclasses. Release on - Destroy. Dispose plain wrappers on Destroy also. - * gtk/Widget.custom : remove the parent set hack since it's "handled" - on Gtk.Object now. All this will get fixed properly when we have - access to owen's toggle_refs. - -2005-05-13 Mike Kestner <mkestner@novell.com> - - * generator/MethodBody.cs : don't create a new destroy notify - delegate, just use GLib.DestroyHelper.NotifyHandler directly. - -2005-05-11 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : mark Dispose virtual. - * gtk/Object.cs : release the Destroy handler in Dispose. - -2005-05-11 Mike Kestner <mkestner@novell.com> - - * configure.in.in : s/-g/-debug - -2005-05-11 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide IconTheme.GetIconSizes. - * gtk/IconTheme.custom : implement GetIconSizes because of its zero - terminated array return value. 2.6 only. [Fixes #74844] - -2005-05-11 Mike Kestner <mkestner@novell.com> - - * pango/Makefile.am : add file. - * pango/Units.cs : new class to wrap PANGO_SCALE and PANGO_PIXELS. - * pango/glue/units.c : accessors for the macros. - * pango/glue/Makefile.am : build it. - * pango/glue/makefile.win32 : build it on win. - [Fixes #74837] - -2005-05-11 Eric Butler <eric@extremeboredom.net> - - * gtk/Gtk.metadata : add IEnumerable iface to ListStore. - * gtk/ListStore.cs : add GetEnumerator. - * gtk/Makefile.am : add file. - * gtk/TreeEnumerator.cs : root node enumerator for a TreeModel. - -2005-05-11 Mike Kestner <mkestner@novell.com> - - * gtk/Widget.custom : manual ListMnemonicLabels implementation to - return a Widget[]. [Fixes #74786] - -2005-05-11 Mike Kestner <mkestner@novell.com> - - * generator/ObjectGen.cs : default empty assembly names for the - mapper. [Fixes #74769] - -2005-05-10 Mike Kestner <mkestner@novell.com> - - * gtk/Object.custom : Dispose on a Destroyed event. - * gtk/Widget.custom : rework the parent_set hack to go direct to - the native signal instead of using the event so we avoid rewrapping of - already destroyed parents. - -2005-05-10 Mike Kestner <mkestner@novell.com> - - * gdk/Pixbuf.custom : use non-obsolete PixbufLoader.Write overload. - * gdk/PixbufLoader.custom : add obsolete PixbufLoader.Write overload - for the uint case for backcompat. Update other uses to the new ulong - overload. - * sample/GtkDemo/DemoImage.cs : use PixbufLoader.Write (byte[]) - overload. - -2005-05-09 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : add a try/catch block to g_object_unref calls to - help identify "extra unref" bugs when exceptions occur. - -2005-05-06 John Luke <john.luke@gmail.com> - - * pango/Makefile.am: add Matrix.custom - * pango/Matrix.custom: add Pango.Matrix.Identity field - which is the equivalent of PANGO_MATRIX_INIT - * sample/GtkDemo/DemoRotatedText.cs: use Pango.Matrix.Identity - * doc/en/Pango/Matrix.xml: add docs for Pango.Matrix.Identity - -2005-05-06 Mike Kestner <mkestner@novell.com> - - * configure.in.in : always enable debug build in maintainer_mode. - -2005-05-06 Mike Kestner <mkestner@novell.com> - - * gdk/Pixbuf.custom : move the GetCallingAssembly invocations back out - the the public methods. - * gdk/PixbufLoader.custom : ditto. - -2005-05-06 Mike Kestner <mkestner@novell.com> - - * bootstrap : - * bootstrap-2.4 : use ln instead of cp for api files so reparsing - causes rebuilds. - * sources/gtk-sharp-2.6-sources.xml : moved from gtk-sharp-sources.xml - plus fixed the pango, atk, and gdk raw filenames. - * sources/gtk-sharp-2.4-sources.xml : sources file for 2.4 api. - * sources/Makefile.am : added 2.4/2.6 targets for api and get-source - with make api/get-source-code getting/parsing both versions. - * */*.raw : regenerate - -2005-05-06 Jose Faria <spigaz@gmail.com> - - * gdk/Pixbuf.custom : new width/height ctor overloads. - * gdk/PixbufLoader.custom : new width/height ctor overloads. - -2005-05-04 Mike Kestner <mkestner@novell.com> - - * autogen.sh : error out with bootstrap help message. - * bootstrap : replaces autogen.sh for the 2.5.x release line. - * bootstrap-2.4 : replaces autogen.sh for the 1.9.x release line. - * configure.in.in : renamed from configure.in and added substitution - for version, dependencies, CFLAGS and CSFLAGS. - * README : bootstrap docs - * */*-api.raw : moved to api-2.6.raw for bootstrapping. - * */*-api-2.4.raw : added 2.4 api files for bootstrapping. - * */glue/Makefile.am : add GTK_SHARP_VERSION_CFLAGS. - * pango/Attribute.cs : add a #if GTK_SHARP_2_6 block. - * pango/glue/attribute.c : add a couple #ifdef GTK_SHARP_2_6 blocks. - * sample/GtkDemo/* : make the 2.6 demos conditional. - -2005-05-04 Mike Kestner <mkestner@novell.com> - - * glib/Signal.cs : s/DestroyNotify/SignalDestroyNotify to fix mcs 1.0 - compilation. - * gdk/Input.custom : ditto. - -2005-05-04 Todd Berman <tberman@off.net> - - * glade/XML.custom: Store the callback wrapper so it doesn't get GC'd. - -2005-05-04 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl: make note of _get_type methods for enums - - * */*-api.xml: Regen, adding gtype="..." to many enum types - - * generator/EnumGen.cs (Generate): if the enum has the - "gtype" property, add a GTypeAttribute pointing to an internal - FooGType class whose GType property can be used to get the enum's - GType. - - * generator/ObjectGen.cs: - s/ObjectManager.RegisterType/GType.Register/ - - * glib/GTypeAttribute.cs: attribute for indicating a property that - will return the GType of a type (particularly for enums, which - can't have GType properties added to them). - - * glib/GType.cs: renamed from Type.cs to match the type name - (public static readonly GType ...): add a few missing types. - (Register): moved from ObjectManager.RegisterType - (LookupGType): moved from TypeConverter.LookupType and extended to - handle GTypeAttribute. Also, fix mappings for sbyte/byte/char, and - return specific GTypes for Object subclasses rather than always - returning GType.Object. [Fixes #74699] - (LookupType): moved from ObjectWrapper.LookupType - (ToString): return the type name - - * glib/Object.cs (RegisterGType): - s/ObjectManager.Register/GType.Register/ - (LookupGType): Make this protected internal so GType can access - it. - - * glib/ObjectManager.cs (RegisterType): deprecate in favor of - GType.Register. - (LookupType): moved to GType - - * glib/TypeConverter.cs (LookupType): now a deprecated wrapper - around GType.LookupGType. - - * glib/Value.cs: Use GType casts rather than TypeConverter - - * gtk/NodeStore.cs (ScanType): - * gtk/ListStore.custom (ListStore): - * gtk/TreeStore.custom (TreeStore): Use (GType) cast rather than - TypeConverter. Remove the error check and exception, since the - cast never returns GType.Invalid. (The check probably predates - GLib.ManagedValue.) - - * gnome/PanelAppletFactory.cs (Register): Use a GType cast rather - than GLib.Object.LookupGType (which is no longer accessible after - an mcs bugfix) - - * sample/GtkDemo/DemoIconView.cs (CreateStore): use the Type[] - constructor rather than the GType[] constructor, since it - translates typeof(Gdk.Pixbuf) correctly now. - -2005-05-04 Dan Winship <danw@novell.com> - - * generator/Parameters.cs (Parameters.Validate): If the parameters - end with "callback, gpointer, GDestroyNotify", then mark the - callback as having "notified" Scope. - (Parameters.IsHidden): Hide user_data and GDestroyNotify after a - callback. - (Parameter.Scope): make this settable - (Parameter.IsDestroyNotify): new test - - * generator/MethodBody.cs (Initialize): Handle "notified" callback - scope (using a GCHandle and GLib.DestroyHelper.NotifyHandler) - - * generator/CallbackGen.cs (GenWrapper): Add a static - "GetManagedDelegate" method to the wrapper type, to translate a - native delegate back to its corresponding managed delegate. - (FromNative): use GetManagedDelegate. - - * generator/ReturnValue.cs (Validate): We handle callback return - values now - - * generator/SymbolTable.cs: marshal GDestroyNotify as - GLib.DestroyNotify - - * glib/DestroyNotify.cs: Moved from gtk - - * gtk/Gtk.metadata: globally change GtkDestroyNotify to - GDestroyNotify, but then change back the ones that are exposed in - the API. Un-hide lots of methods we can correctly autogenerate - now. - - * gtk/DestroyHelper.cs: moved to glib - - * gtk/*.custom: remove methods that are autogenerated now, add - Obsolete wrappers where needed, replace Gtk.DestroyHelper usage - with GLib.DestroyHelper. - - * gdk/Gdk.metadata: - * gnome/Gnome.metadata: Turn Gdk.Drawable.SetData and - Gnome.IconList.SetIconDataFull's GDestroyNotify args into - gpointers so the generated API stays the same as it used to be. - - * rsvg/Handle.custom: implement deprecated SetSizeCallback - - * sample/GtkDemo/DemoIconView.cs (CreateSort): update for API - changes - -2005-05-03 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : parse const * const * Foo () properly. - [Fixes #74710] - -2005-05-02 Dan Winship <danw@novell.com> - - * generator/Parameters.cs (IsHidden): method to check if a - parameter should be hidden in the managed sig (eg, because it's - user_data, or it's the length of the preceding array/string, etc). - (VisibleCount): the number of parameters that will actually be - exposed in the managed signature. - (IsAccessor): test VisibleCount, not Count - (AccessorReturnType, AccessorName): deal with the fact that the - accessor parameter might not be the first one. - - * generator/CallbackGen.cs: - * generator/Signature.cs: use Parameters.IsHidden. - - * generator/Method.cs (Initialize): set is_set based on - VisibleCount, not Count. - (Validate): call base.Validate() before Initialize() so that - VisibleCount will be correct in Initialize. - - * generator/MethodBody.cs (GetCallString, CallArrayLength, - Initialize): update to deal with accessors with multiple args. - - * gtk/Clipboard.custom (SetText): implement as an Obsolete variant - of the Text property - - * gtk/IconTheme.custom (SearchPath, SetSearchPath): obsolete - SetSearchPath, implement a setter on SearchPath instead. - - * gtk/ListStore.custom (SetColumnTypes): - * gtk/TreeStore.custom (SetColumnTypes): implement as an Obsolete - variant of the ColumnTypes property. - - * glade/XML.custom (CustomHandler): implement as a property - (SetCustomHandler): Mark this obsolete - - * glade/Global.custom (SetCustomHandler): deprecate in favor of - XML.CustomHandler. - - * gnomedb/Editor.custom (SetText): implement as an Obsolete - variant of the Text property - -2005-05-02 Dan Winship <danw@novell.com> - - Apply the parts of the generator reorganization from #69514 that - don't actually affect the generated output - - * generator/PropertyBase.cs: new base class for fields and - properties (mostly containing code formerly in Property.cs). - - * generator/Property.cs: derive from PropertyBase - - * generator/FieldBase.cs: base class for fields (containing some - code formerly in Field.cs) - - * generator/StructField.cs: class for struct fields (the rest of - what used to be Field.cs) - - * generator/StructBase.cs: s/Field/StructField/ - - * gnome/Gnome.metadata: hide a few _get_ methods that the - generator is just now noticing, to preserve the old output. - -2005-05-02 Mike Kestner <mkestner@novell.com> - - * generator/Property.cs : fix interface setter generation. - [Fixes #74766] - -2005-04-27 Ben Maurer <bmaurer@ximian.com> - - * */Makefile.am: more build fixes - - * configure.in: amd64 build fix - -2005-04-26 Miguel de Icaza <miguel@novell.com> - - * gtkdotnet/Graphics.cs: Contribution from Sebastian Faltoni - <sebastian.faltoni@gmail.com> that implements support for using - System.Drawing on Windows. - -2005-04-26 Mike Kestner <mkestner@novell.com> - - * gtk/NodeStore.cs : implement IEnumerable. - -2005-04-24 Dan Winship <danw@novell.com> - - * pango/Attribute.cs: Base class for Pango attributes, a la - Gdk.Event - - * pango/pango-symbols.xml: explain how to marshal PangoAttribute. - - * pango/AttrBackground.cs: - * pango/AttrFallback.cs: - * pango/AttrFamily.cs: - * pango/AttrFontDesc.cs: - * pango/AttrForeground.cs: - * pango/AttrLanguage.cs: - * pango/AttrLetterSpacing.cs: - * pango/AttrRise.cs: - * pango/AttrScale.cs: - * pango/AttrShape.cs: - * pango/AttrSize.cs: - * pango/AttrStretch.cs: - * pango/AttrStrikethrough.cs: - * pango/AttrStrikethroughColor.cs: - * pango/AttrStyle.cs: - * pango/AttrUnderline.cs: - * pango/AttrUnderlineColor.cs: - * pango/AttrVariant.cs: - * pango/AttrWeight.cs: subclasses of Attribute, with proper - constructors. These don't actually correspond one-to-one with - the underlying types, but they're nicer this way. - - * pango/Pango.metadata: Hide Attribute and its subclasses from the - generator. Also hide "Attr" (which previously contained - non-working badly-named static methods to create Attributes) - and AttrClass (which is not really useful outside of pango - itself). - - * pango/AttrIterator.custom: use Pango.Attribute.GetAttribute. - - * pango/glue/attribute.c: glue for Attribute and its subclasses - - [Fixes #52575 and its semi-dup #46552] - -2005-04-22 Dan Winship <danw@novell.com> - - * gnome/Gnome.metadata: mark GnomeTriggerActionFunction's char** - param const - - * glib/Marshaller.cs (Utf8PtrToString): Add an IntPtr[]->string[] - overload, since that's what we actually need in the case where - it's used (above). Leave the IntPtr[]->string[] overload of - PtrToStringGFree in case anyone is using it manually. - - * gtk/Gtk.metadata: hide GtkModuleInitFunc and - GtkModuleDisplayInitFunc; they are the signatures of user-defined - methods that gtk only ever resolves via g_module_symbol(), so - they're not useful from C#. (And the marshalling was all wrong - anyway...) - - * glib/Type.cs: - * glib/TypeConverter.cs: - * glib/Value.cs: sort lists of GTypes into TypeFundamental order - -2005-04-22 Mike Kestner <mkestner@novell.com> - - * configure.in : bump version to 2.5.0 for trunk. - -2005-04-21 Mike Kestner <mkestner@novell.com> - - * configure.in : require gtk+ 2.6. - * generator/ReturnValue.cs : invalidate Callback returns for now. - * gtk/Gtk.metadata : some renames for conflicting new API. - * parser/gapi2xml.pl : whitespace tweak for class VM regexen. - * sources/Makefile.am : add new patch, kill atk patch, revise dirs. - * sources/atkhyperlink.patch : kill unnecessary patch. - * sources/gtkclipboard.patch : add new clipboard patch. - * sources/gtk-sharp-sources.xml : parse gtk+-2.6. - * */*-api.raw : regen pango, atk, gdk, and gtk for new versions. - -2005-04-21 Dan Winship <danw@novell.com> - - * parser/gapi_pp.pl: add "#if 0" to $eatit_regex - - * gdk/EventClient.cs (gtksharp_gdk_event_client_get_time): - * glib/Object.cs (gtksharp_get_type_id): - * glib/Value.cs (gtksharp_object_get_ref_count, - g_value_take_boxed): - * gnome/PrintContext.custom (gnome_print_concat, - gnome_print_glyphlist, gnome_print_setdash): - * gtk/NodeStore.cs (gtksharp_node_store_new, stamp): - * gtk/NodeView.cs (gtk_tree_view_new_with_model): - * gtk/Widget.custom (gtksharp_gtk_widget_set_allocation): - * pango/LayoutLine.custom (g_free): Remove unused - prototypes/fields - -2005-04-21 Mike Kestner <mkestner@novell.com> - - * Makefile.include : make mcs shaddup about 169. - -2005-04-20 Mike Kestner <mkestner@novell.com> - - * generator/*.cs : cleanup the unused private member warnings. - -2005-04-20 Mike Kestner <mkestner@novell.com> - - * parser/gapi-parser.cs : add a directory element with child exclude - elements to simplify source version updating. - * sources/gtk-sharp-sources.xml : switch to directory elements. - -2005-04-19 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : add a None member to ModifierType and fix the - definition for ModifierMask since the parser barfs on it. - [Fixes #74594] - -2005-04-17 Jeroen Zwartepoorte <jeroen.zwartepoorte@gmail.com> - - * sample/PolarFixed.cs: (PolarFixed.PolarFixedChild): Fix compilation - problem. - -2005-04-15 Mike Kestner <mkestner@novell.com> - - * configure.in : remove unnecessary libxml check. - * parser/gapi-parser.cs : use a System.Xml to kill gapi_format_xml. - * parser/formatXml.c : kill. - * parser/Makefile.am : kill gapi_format_xml - * */*-api.raw : enormous whitespace diff. sorry dawgs on mono-patches. - -2005-04-15 Mike Kestner <mkestner@novell.com> - - * parser/gapi-parser.cs : C# rewrite of the old perl driver script. - * parser/gapi_parser.pl : kill. - * parser/gapi2-parser.in : invoke via $(RUNTIME). - * parser/Makefile.am : build rework for C# parser driver. - * sources/Makefile.am : use $(RUNTIME) to invoke new parser assm. - -2005-04-12 Mike Kestner <mkestner@novell.com> - - * configure.in : bump version to 1.9.3 and tag. - -2005-04-11 Mike Kestner <mkestner@novell.com> - - * gdk/Pixbuf.custom : fix out params on RenderPixmapAndMask* methods. - -2005-04-11 Dan Winship <danw@novell.com> - - * generator/ClassBase.cs (ParseImplements): record both managed - and unmanaged interface declarations. - (Implements): check recursively - - * generator/ObjectGen.cs (Generate): output managed interfaces - - * gtk/Gtk.metadata: make Container implement IEnumerable - - * gtk/Container.custom (GetEnumerator): implement (a simplified - form of Children). - (AllChildren): add this (which accumulates the results of - Forall()). - (ForAll): mark ForAll(bool,CallbackInvoker) obsolete and add a - ForAll(bool,Gtk.Callback) overload to replace it. - - * sample/PolarFixed.cs: new silly but fully-functional demo of - how to subclass container. - - * sample/CustomNotebook.cs: kill this, since it was really - complicated, and never fully functional. - - * sample/GtkDemo/DemoImages.cs (ToggleSensitivity): Use foreach - directly on the container, rather than on its .Children. - -2005-04-11 Mike Kestner <mkestner@novell.com> - - * gtk/Quit.custom : obsolete AddFull and implement Add properly. - * gtk/TreePath.custom : add ctor (int[] indices). - * gtk/Gtk.metadata : hide Quit.Add* and some ellipsis methods that are - implemented manually already. - -2005-04-08 Dan Winship <danw@novell.com> - - * configure.in: Add an --enable-debug flag, to build .mdb files - for all of the assemblies - - * Makefile.include: - * gconf/GConf/Makefile.am: - * gconf/GConf.PropertyEditors/Makefile.am: - * glib/Makefile.am: - * gtkdotnet/Makefile.am (CLEANFILES): add $(ASSEMBLY).mdb - $(ASSEMBLY): build with $(CSFLAGS). Always delete $(ASSEMBLY).mdb - before building $(ASSEMBLY), so that if you first build with - debugging enabled, then update, then rebuild without debugging - enabled, you don't end up with an out-of-date .mdb file. - -2005-04-08 Alp Toker <alp@atoker.com> - - * atk/makefile.win32: gapi-cdecl-insert was called in the wrong place - and broke the win32 build. - -2005-04-07 Dan Winship <danw@novell.com> - - * gtk/Object.custom (Raw): Always ref the object, even if it's not - floating when we get it, since GLib assumes we hold a ref on it. - [Fixes #74468] - - * gtk/Window.custom: remove refcount special-handling here - -2005-04-06 Mike Kestner <mkestner@novell.com> - - * gtk/FileFilter.custom : AddCustom delegate is destroy notified. - * gtk/Gtk.metadata : hide FileFilter.AddCustom. hide gtk_object_get|set. - -2005-04-05 Mike Kestner <mkestner@novell.com> - - * gtk/*.custom : persistent delegates for most of the remaining - "interesting" methods. - -2005-04-05 Dan Winship <danw@novell.com> - - * gdk/PixbufLoader.custom: Fix the new constructors to make sure - they call Close() in the event of an exception, to prevent a - g_warning. - -2005-04-05 Mike Kestner <mkestner@novell.com> - - * gtk/DestroyHelper.cs : implement an internal DestroyNotify handler - to release GCHandles. - * gtk/*.custom : rework existing persistent delegate implementations - to use destroy notify or PersistentData. - -2005-04-05 Alp Toker <alp@atoker.com> - - * gtk/Menu.custom: don't re-implement the Screen getter in Gtk.Menu. - Instead just return base.Screen, which is implemented by Widget. - -2005-04-04 Dan Winship <danw@novell.com> - - * pango/Scale.cs: rename the size constants to not have - underscores in their names (and add obsolete aliases for the old - names). - - * sample/GtkDemo/DemoTextView.cs: use the new names - -2005-04-04 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : mark all the call scope callback params to quiet - the warnings. - -2005-04-04 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : hide some manually implemented callback methods. - * gdk/*.custom : implement several methods containing persistent - callback parameters. - * generator/BoxedGen.cs : set gen_info.CurrentType in Generate. - * generator/ClassGen.cs : set gen_info.CurrentType in Generate. - * generator/Ctor.cs : set gen_info.CurrentMember in Generate. - * generator/GenerationInfo.cs : add CurrentMember and CurrentType. - * generator/Method.cs : set gen_info.CurrentMember in Generate. - * generator/MethodBody.cs : always generate null guarding for array - parameters, and add a nag for callback parameters without a scope attr. - * generator/ObjectGen.cs : set gen_info.CurrentType in Generate. - * generator/OpaqueGen.cs : set gen_info.CurrentType in Generate. - * generator/Parameters.cs : kill NullOk. add Scope property. - * generator/StructGen.cs : set gen_info.CurrentType in Generate. - * gtk/Gtk.metadata : kill a few null_ok attrs. - * pango/Pango.metadata : mark the callback params as call scope. kill - a couple null_ok attrs. - -2005-04-01 Dan Winship <danw@novell.com> - - * samples/GtkDemo/*.cs: General fixup and cleanup; Remove some - gratuitous differences from the C version. Make comment and indent - style consistent. Don't use "this." where not needed. Override - OnDeleteEvent rather than connecting one's own DeleteEvent signal. - - * sample/GtkDemo/DemoApplicationWindow.cs (static - DemoApplicationWindow): register the Gtk logo icon with - StockManager so it shows up correctly in the toolbar. - (AddActions): Register the radio items as radio items so they work - right. - - * sample/GtkDemo/DemoHyperText.cs (EventAfter): handle - link-clicking from Widget.WidgetEventAfter (as in the C version), - rather than ButtonRelease, now that WidgetEventAfter is wrapped. - - * sample/GtkDemo/DemoImages.cs (DemoImages): use - Gtk.Image.LoadFromResource (particularly to make the animation - work right). - (OnDestroyed): handle clean up (remove the timeout, etc) - - * sample/GtkDemo/DemoMain.cs (LoadStream): Fix handling of blank - lines and whitespace to match the C version. - - * sample/GtkDemo/DemoPixbuf.cs (Expose): Use - System.Runtime.InteropServices.Marshal.Copy() to copy - pixbuf.Pixels to pass to DrawRgbImageDithalign, to make this more - like the C version (and probably faster?) - (timeout): Remove the FIXME since it seems to work now - - * sample/GtkDemo/DemoStockBrowser.cs: Simplify a bunch. Use - reflection to get the C# names of the stock icons rather than - trying to correctly re-mangle the ids. Display the Label with the - accelerator underlined. - - * sample/GtkDemo/DemoTextView.cs (AttachWidgets): use - Gtk.Image.LoadFromResource, so the image is properly loaded as an - animation, not a static image. Don't set the combobox's "Active" - property (for consistency with the C version). - (InsertText): Fix miscellaneous differences with the C version. - Remove some leftover cruft from earlier workarounds for gtk# bugs. - - * sample/GtkDemo/DemoTreeStore.cs (AddColumns): Make this more - like the C version so the checkboxes are sensitized and hidden - correctly on a per-row basis. - - * sample/GtkDemo/DemoUIManager.cs: Make the radio menu items work. - - * sample/GtkDemo/README: - * sample/GtkDemo/TODO: update - -2005-04-01 Mike Kestner <mkestner@novell.com> - - * gtk/TreeModelFilter.custom : manually implement SetVisibleFunc and - SetModifyFunc to handle delegate persistence. - * gtk/Gtk.metadata : hide methods. - -2005-04-01 Mike Kestner <mkestner@novell.com> - - * gtk/Clipboard.custom : manually implement SetWithData and - SetWithOwner to handle delegate persistence. - * gtk/Gtk.metadata : hide methods. - -2005-03-31 Dan Winship <danw@novell.com> - - * gdk/PixbufLoader.custom: Implement System.IO.Stream and - resource-file constructors (using code formerly in Pixbuf.custom) - - * gdk/Pixbuf.custom: Redo the stream and resource ctors in terms - of the PixbufLoader ones. - - * gdk/PixbufAnimation.custom: Add stream and resource ctors - - * gtk/Image.custom: Add stream and resource ctors - -2005-03-31 Mike Kestner <mkestner@novell.com> - - * glib/ManagedValue.cs : add null/NULL guarding to Copy, Free, - WrapObject, and ObjectForWrapper. [Fixes #74197] - -2005-03-30 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * parser/gapi2xml.pl : parse gst type macros. - -2005-03-30 Anthony Taranto <voltron@emptyrhetoric.com> - - * gtk/Widget.custom : cause Allocation.Set to call SizeUpdate(). - * gtk/glue/widget.c : remove gtksharp_gtk_widget_set_allocation(). - -2005-03-29 Mike Kestner <mkestner@novell.com> - - * gtk/TreeStore.custom : fix a CLS incompliance in the Append - Prepend, Insert, InsertBefore, and InsertAfter methods by obsoleting - them and adding new *Node methods that are CLS compliant. - [Fixes #73876] - -2005-03-29 Mike Kestner <mkestner@novell.com> - - * generator/Parser.cs : add symbol type='marshal' support. - * gdk/Event.cs : add GetEvent method to wrap arbitrary events. - * gdk/gdk-symbols.xml : make Event, EventAny, and EventNoExpose - marshal symbols using Event.GetEvent (). [Fixes #74184] - -2005-03-29 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs : special case ucs4 "0" conversion. - [Fixes #74175] - -2005-03-28 Mike Kestner <mkestner@novell.com> - - * gdk/Pixbuf.custom : add FromDrawable static method and obsolete - CreateFromNative, which should've been static. [Fixes #74155] - -2005-03-28 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : Dispose the values passed to - g_signal_chain_from_overriden in base VM invocations. [Fixes #73522] - -2005-03-25 Mike Kestner <mkestner@novell.com> - - * */makefile.win32 : add gapi-cdecl-insert to assembly target. - -2005-03-25 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : add CDeclCallback attrs to native dels. - * generator/Signal.cs : add CDeclCallback attrs to native dels. - -2005-03-25 Mike Kestner <mkestner@novell.com> - - * */*.cs : tag native callback delegates with [CDeclCallback]. - * */*.custom : tag native callback delegates with [CDeclCallback]. - -2005-03-24 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : don't create native delegates for nulls. - * generator/ObjectGen.cs : revamp the ObjectManager code. - * glib/Object.cs : use new ObjectManager.RegisterType overload. - * glib/ObjectManager.cs : rewrite to kill the lameass LoadWithPartial - hack and keep a GType to Type mapping for quicker lookup/activation. - -2005-03-23 Mike Kestner <mkestner@novell.com> - - * gapi-cdecl-insert : a little perl script to insert modopts - * Makefile.am : dist the new script. - for cdecl callback delegates on win32. - * glade/makefile.win32 : use gapi-cdecl-insert - * glade/XML.custom : add [GLib.CDeclCallback] to RawXMLConnectFunc. - * glib/Makefile.am : add new file. - * glib/makefile.win32 : use gapi-cdecl-insert - * glib/CDeclCallbackAttribute.cs : new attr to tag delegates with - that will be invoked from native code. We have to mangle the il - with a modopt otherwise they are stdcall'd. - * glib/ManagedValue.cs : add [GLib.CDeclCallback] to Copy/Free. - switch to using GCHandles instead of the current IntPtr hack. - -2005-03-15 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide TreeSortable.SetSortFunc. - * gtk/ListStore.custom : implement SetSortFunc for persistence. - * gtk/Makefile.am : add custom file. - * gtk/TreeModelSort.custom : implement SetSortFunc for persistence. - * gtk/TreeSortable.custom : new file, add hidden method decls. - * gtk/TreeStore.custom : implement SetSortFunc for persistence. - -2005-03-15 John Luke <john.luke@gmail.com> - - * glib/Object.cs: use IsDefined to check for ClassInitializer - attribute, fixes a warning and is supposedly better for performance - -2005-03-15 Dan Winship <danw@novell.com> - - Re-fix for yesterday's fix that didn't actually work. - - * gtk/ITreeNode.cs: add a "child" arg to TreeNodeRemovedHandler - - * gtk/TreeNode.cs (RemoveChild, OnChildRemoved): update for that - - * gtk/NodeStore.cs (child_deleted_cb): use the passed-in child; - GetNodeAtPath won't work because the parent node already removed - the child from its list - -2005-03-14 Mike Kestner <mkestner@novell.com> - - * configure.in : rework the gtkhtml check for 3.6. - -2005-03-14 Dan Winship <danw@novell.com> - - * gtk/TreeNode.cs (AddNode): add an overload that takes a position - - * gtk/NodeStore.cs (AddNode): likewise - (AddNode, child_added_cb): when adding a node, recursively connect - to the node signals on its children - (RemoveNode, child_deleted_cb): when removing a node, recursively - remove its children from node_hash. - -2005-03-12 Mike Kestner <mkestner@novell.com> - - * glade/Glade.metadata : mark the XMLCustomWidgetHandler string params - const-gchar*. Wonder how many of these are gonna screw us? - -2005-03-12 Mike Kestner <mkestner@novell.com> - - * gtk/TreeViewColumn.custom : use PersistentData to hold the - CellDataFuncs. - -2005-03-12 Mike Kestner <mkestner@novell.com> - - * glib/Makefile.am : add new file. - * glib/Object.cs : add protected PersistentData hash to hold data - across GC cycles. - * glib/WeakObject.cs : new object to hold managed refs weakly against - the native object. - * gtk/ListStore.custom : hold refs for DefaultSortFuncs. - * gtk/TreeModelSort.custom : hold refs for DefaultSortFuncs. - * gtk/TreeStore.custom : hold refs for DefaultSortFuncs. - -2005-03-12 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : don't derive Wrappers from DelegateWrapper - any more. It leaks delegates like crazy. We effectively now use call - scope as the default for delegate parameters. - * generator/MethodBody.cs : use new simpler Wrapper ctor. - * glib/DelegateWrapper.cs : mark the ctor obsolete so people know to - update any manually coded wrappers out there. - * */*.custom : use new simpler Callback Wrapper ctors. - -2005-03-11 Mike Kestner <mkestner@novell.com> - - * glib/DelegateWrapper.cs : call g_object_set_data_full since we are - using its sig, not set_data. - -2005-03-10 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs : fix gssize and gsize, they aren't 32 bit - like the docs say they are. - -2005-03-10 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs : don't use g_utf8_strlen to determine the byte - count to be copied, it returns chars, not bytes. - * glib/glue/unichar.c : implement a quick and dirty strlen glue func. - -2005-03-10 Mike Kestner <mkestner@novell.com> - - * gtk/Style.custom : add bg_pixmap accessors. remove IntPtr[] vars - and s/6/5 for array sizes. - * gtk/glue/style.c : add bg_pixmap field glue. - [Fixes #73532] - -2005-03-09 Mike Kestner <mkestner@novell.com> - - * */*.custom : scrub for string usage in DllImports. - * gnome/Makefile.am : remove IconTheme.custom, it's not generated. - -2005-03-09 Mike Kestner <mkestner@novell.com> - - * glib/Marshaller.cs : add IntPtr.Zero guarding. - -2005-03-09 Alexandre Gomes <alexmipego@hotmail.com> - - * gtk/Gtk.metadata: Set GetVisibleRect param to be passed as out. - -2005-03-08 Mike Kestner <mkestner@novell.com> - - * */*.cs : scrub for StringToPtrAnsi and string usage in DllImports. - * */*.custom : begin the scrub here too. - * generator/ConstStringGen.cs : implement IManualMarshaler and move to - 100% IntPtr marshaling. - * generator/Ctor.cs : call Body.Finish too. - * generator/IManualMarshaler.cs : new interface for generatables that - marshal manually and need cleanup. - * generator/Makefile.am : new file. - * generator/MethodBody.cs : use IManualMarshaler if applicable. - -2005-03-07 Mike Kestner <mkestner@novell.com> - - * generator/MethodBody.cs : remove an unused var. - * generator/ReturnValue.cs : privatize a couple props. Refactor the - SymbolTable lookup logic to be generatable based. - -2005-03-04 Mike Kestner <mkestner@novell.com> - - * generator/ImportSignature.cs : out param handling fix. - * generator/Makefile.am : kill StringGen.cs. - * generator/MethodBody.cs : simplify out param handling. - * generator/StringGen.cs : kill it, now using MarshalGen. - * generator/SymbolTable.cs : make non-const strings use an appropriate - MarshalGen. Non-const strings are now correctly marshaled as Utf8. - * glib/Marshaller.cs : add some utf8-fu for strdup/free marshaling. - Add a method to alloc/copy structs to native memory, unused yet. - * gtk/Gtk.metadata : partially fix a broken delegate. - -2005-03-04 Mike Kestner <mkestner@novell.com> - - * generator/Method.cs : refactor out some retval logic. - * generator/ReturnValue.cs : add FromNative and IsVoid members. - -2005-03-03 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : remove unnecessary null_ok rules. - * generator/Ctor.cs : don't add null params to CreateNativeObject call - for InterfaceGen or OpaqueGen in addition to ObjectGen. - * generator/Field.cs : simplify Object/Opaque gen. - * generator/Method.cs : remove OpaqueGen special casing. - * generator/OpaqueGen.cs : make FromNative null_ok robust. - * generator/Signal.cs : remove arg marshaling ClassBase special case. - * gtk/Gtk.metadata : remove unnecessary null_ok rules. - -2005-03-03 Mike Kestner <mkestner@novell.com> - - * generator/ClassBase.cs : use "as" instead of a cast in FromNative. - * generator/Method.cs : remove the if/else checks for Object retvals. - * glib/Object.cs : return null immediately for NULL in GetObject. - -2005-03-03 Mike Kestner <mkestner@novell.com> - - * generator/ClassBase.cs : add null checking to CallByName. No sense - manually adding this for the ones that need it. Better to have g_criticals - then NullRefExceptions anyway. - * generator/MethodBody.cs : simplify out handle generation. - [A babystep toward #68820] - -2005-02-28 Dan Winship <danw@novell.com> - - * gtk/Container.custom (ChildType): fix this to just call - gtk_container_child_type(). - - * gtk/glue/container.c (gtksharp_container_base_child_type): kill - -2005-02-28 Mike Kestner <mkestner@novell.com> - - * glib/Idle.cs : add locking on the source_handlers. - * glib/Source.cs : add locking on the source_handlers. - * glib/Timeout.cs : add locking on the source_handlers. - -2005-02-25 Mike Kestner <mkestner@novell.com> - - * glib/Source.cs : remove from the hash by key. - * glib/Idle.cs : remove from the hash by key. - -2005-02-23 Dan Winship <danw@novell.com> - - * sources/gnomedb.patch: Patch over a bug in gnome-db-editor.h - - * gnomedb/gnomedb-api.raw: Regen - -2005-02-23 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl (parseTypeToken): don't parse punctuation - into the type name. [Fixes #72925] - - * gtk/gtk-api.raw: Regen, exposing the previously-broken - AccelGroup.AccelActivate, AccelMap.Changed, - ActionGroup.ConnectProxy, ActionGroup.DisconnectProxy, - ActionGroup.PreActivate, ActionGroup.PostActivate, and - Widget.EventAfter. - - * gtk/Gtk.metadata: Give proper names to the parameters of those - signals - -2005-02-23 Dan Winship <danw@novell.com> - - * generator/Field.cs (Validate): new, to check that a field has a - valid type (or is hidden). - - * generator/StructBase.cs (Validate): new, to check that all of - the struct fields have valid types - - * generator/BoxedGen.cs (Generate): - * generator/StructGen.cs: (Generate): Call Validate() and bail out - if it fails; it's no good to generate a struct with the wrong - layout. - - * gdk/gdk-symbols.xml: add a line for GdkKey -> Gdk.Key. (There's - no actual C type GdkKey, but we can use metadata to change uints - to GdkKeys, which will then become Gdk.Keys.) - - * gtk/AccelKey.custom: remove the "Key" field (which was being - added in the wrong place in the struct), since it's properly - generated now. - - * gtk/Gtk.metadata: Fix the line that renames AccelKey.AccelKey - to AccelKey.Key - - * gnomevfs/Gnomevfs.metadata: hide the (mis-parsed) "action" field - in MimeAction, leaving the struct in the same broken state it was - in with the old generator code - - * parser/gapi2xml.pl: add a hack to allow "foo_bar_get_type()" - rather than "FOO_TYPE_BAR" in G_TYPE_CHECK_INSTANCE_CAST macros, - allowing large parts of libgda that were previously misparsed to - be parsed correctly - - * gda/gda-api.raw: Regen - - * gda/Gda.metadata: Make Gda.Value opaque, since it's mostly a - union and we're horribly butchering its layout. - -2005-02-22 Raja R Harinath <rharinath@novell.com> - - * Makefile.include: Use $(top_builddir)/ instead of ../ so that it - is usable from directories two-or-more deep. - -2005-02-18 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : remove an incorrect and harmful rule on - ClipboardGetFunc. [Fixes #69013] - -2005-02-17 Mike Kestner <mkestner@novell.com> - - * */Makefile.am : define SYMBOLS if it isn't already to fix breakage - with older automakes. - -2005-02-15 Dan Winship <danw@novell.com> - - * generator/ObjectGen.cs (GenChildProperties): If the class has an - ancestor that also defines child properties, make its child - properties class be a subclass of that ancestor's child properties - class. (Eg, make Gtk.ButtonBox.ButtonBoxChild be a subclass of - Gtk.Box.BoxChild.) - -2005-02-14 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : mark the color in Rgb.FindColor ref. - -2005-02-11 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide Menu.SetScreen. - * gtk/Menu.custom : manually implement Screen prop. - -2005-02-11 Dan Winship <danw@novell.com> - - * gtk/Gtk.metadata: Hide StyleGetProperty and StyleGetValist since - they're generated wrong, and StyleGet to avoid an ellipsis - warning. (Also hide the deprecated ellipsis method "Set".) - - * gtk/Widget.custom (StyleGetProperty): implement manually, a la - Gtk.Container.ChildGetProperty. - - * gtk/glue/widget.c (gtksharp_widget_style_get_property): glue for that - - * generator/MethodBase.cs (Validate): use CName rather than always - saying "in ctor" - -2005-02-10 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * sample/Actions.cs: Remove obsolete & unsafe GLib.Object.Data usage. - -2005-02-10 Mike Kestner <mkestner@novell.com> - - * configure.in : update version for 1.9.2 release. - -2005-02-09 Mike Kestner <mkestner@novell.com> - - * gtk/Widget.custom : use a static method for the ParentSet hack - so we don't leak objects because the delegate holds an object ref. - -2005-02-07 Ben Maurer <bmaurer@ximian.com> - - * gdk/Point.custom, gdk/Rectangle.custom: misc. new apis to make - this more like the S.D structs. - -2005-02-03 Mike Kestner <mkestner@novell.com> - - * gtk/NodeStore.cs : use CreateNativeObject to allow subclassing. - [Fixes #71749] - -2005-02-03 Mike Kestner <mkestner@novell.com> - - * glib/ObjectManager.cs (GetValidParentType): return null if - G_TYPE_INVALID is returned from glue. [Fixes #72150] - -2005-02-02 Mike Kestner <mkestner@novell.com> - - * generator/Signal.cs : kill unnecessary BaseName prop. - -2005-02-02 Mike Kestner <mkestner@novell.com> - - * generator/Makefile.am : remove source file. - * generator/Signal.cs : generate marshaling callbacks and use new - GLib.Signal marshaling class for events. - * generator/SignalHandler.cs : kill. byebye SignalCallback subclasses. - * glib/Makefile.am : update source files. - * glib/GLibSharp.voidObjectIntPtrSignal.cs : kill. - * glib/Object.cs : mark the old Before/After props Obsolete. Use - GLib.Signal for the notify prop methods. - * glib/Signal.cs : new signal marshaling class. It manages all the - ConnectBefore/After stuff internally and connects itself to the native - object using GCHandles and DestroyNotify lifecycle management. - * glib/SignalCallback.cs : mark Obsolete. - [Fixes #72018 and #69847] - -2005-02-01 Fredrik Nilsson <jymdman@home.se> - - * glib/Marshaller.cs : DateTime marshaling fix. - -2005-01-31 Mike Kestner <mkestner@novell.com> - - * gtk/FileChooserDialog.custom : move backend to first param to - avoid conflicts with button names in overloaded ctor. - -2005-01-31 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs : handle unsigned-*. - * parser/gapi2xml.pl : handle const unsigned * parameters. Also fix - a G_GNUC_PRINTF parsing bug exposed by a GMime. - * */*-api.raw : regen. - [Fixes #71825] - -2005-01-28 Mike Kestner <mkestner@novell.com> - - * generator/ReturnValue.cs : use ToNativeReturnType for ToNativeType - instead of MarshalType. - * generator/Signal.cs : deal with boxed return values. beef up return - handling in the default handler generation code. - * generator/SignalHandler.cs : use ToNative return types for native - callbacks. Remove redundant casting/conversion in callback impl. - [Fixes #71899] - -2005-01-28 Dan Winship <danw@novell.com> - - * glib/Object.cs (AddNotification, RemoveNotification): methods to - subscribe to the "notify" signal (with property details). [#71684] - * glib/GLibSharp.voidObjectIntPtrSignal.cs: autogenerated, for - notifications - * glib/NotifyHandler.cs: sort of autogenerated - -2005-01-28 Mike Kestner <mkestner@novell.com> - - * gtk/Dialog.custom : add a params array for button info to the ctor. - * gtk/FileChooserDialog.custom : add a params array for button info to - both ctors. Chain them to IntPtr.Zero. - * gtk/Gtk.metadata : hide the ellipsis ctors for the dialog types. - [Fixes #71818] - * sample/GtkDemo/DemoDialog.cs : make the InteractiveDialog use the - new Dialog ctor as it does in the c version. - -2005-01-27 Mike Kestner <mkestner@novell.com> - - * gtk/NodeSelection.cs : use new GetSelectedRows() overload. - * gtk/TreeSelection.custom : add a GetSelectedRows overload without the - out model param. [Fixes #71814] - -2005-01-27 Mike Kestner <mkestner@novell.com> - - * gtk/NodeView.cs : fix the value creation in the ctor. - -2005-01-26 Mike Kestner <mkestner@novell.com> - - * glib/Value.cs : add a private debugging DllImport for ref_counts - since the glue is there already. g_value_get_object returns an - unowned ref, so don't pretend like we own it. Make get_Val work for - GObject subclasses. [Fixes #71125] - -2005-01-26 Mike Kestner <mkestner@novell.com> - - * gtk/NodeView.cs : always use CreateNativeObject. - -2005-01-26 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide 3 IM related internal types. [Fixes #71021] - -2005-01-26 Mike Kestner <mkestner@novell.com> - - * generator/*.cs : refactoring of Parameters class. Added IEnumerable - to Parameters and gracefully handle elem == null instead of special - casing parms == null all over the place. Parameter logic is now Count - driven. [Fixes #71750] - -2005-01-26 Dan Winship <danw@novell.com> - - * generator/Property.cs (Generate): Remove a redundant WriteLine (that - resulted in there being 2 blank lines before every property). - - * generator/Signal.cs (Generate): s/Write/WriteLine/ to fix a - weirdly-formatted if statement in the generated code. - -2005-01-25 John Luke <john.luke@gmail.com> - - * sample/CustomNotebook.cs: - * sample/CustomWidget.cs: use Widget.WidgetFlags prop to avoid - obsolete warning - -2005-01-25 Mike Kestner <mkestner@novell.com> - - * gnome/About.custom : implement a subclassable ctor. - * gnome/Gnome.metadata : hide About ctor, fix About.Construct parms. - * gnome/Makefile.am : add the new custom. - [Fixes #71271] - -2005-01-25 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : hide all the Pixbuf.SaveTo methods. - * gdk/Pixbuf.custom : implement the SaveTo methods. - [Fixes #71430] - -2005-01-25 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide all the SignalFunc using Toolbar methods. - * gtk/Makefile.am : add the new custom. - * gtk/Toolbar.custom : implement the SignalFunc methods. Deal with - null for Widget params in *Element. - [Fixes #71428] - -2005-01-24 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * generator/MethodBody.cs : fix out LPUGen params. - -2005-01-24 Mike Kestner <mkestner@novell.com> - - * gda/Makefile.am : add new custom. - * gda/XmlConnection.custom : add backcompat static ctor. - * generator/ClassBase.cs : refactor lookup logic to here from Ctor - and improve the collision resolution. - * generator/Ctor.cs : refactor to use MethodBase. - * generator/Makefile.am : add new file. - * generator/MethodBase.cs : new base class for ctors and methods. - * generator/Method.cs : refactor to use MethodBase. - * generator/StructBase.cs : move some logic from here to Ctor. - * gnome/CanvasPathDef.custom : add backcompat static ctor. - * gnome/GPPath.custom : add backcompat static ctor. - * gnome/Makefile.am : add new custom. - * gtk/Gtk.metadata : mark a colliding Button ctor shared. - -2005-01-23 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/ActionGroup.custom: Add a string index for the GetAction method. - -2005-01-20 Dan Winship <danw@novell.com> - - * glib/Marshaller.cs (StringFormat): Calls String.Format and makes - sure the output has no unescaped "%"s. (For wrapping printf-style - unmanaged methods with String.Format-style managed ones.) - - * gtk/MessageDialog.custom (MessageDialog): use it. #71405. Also, - use gtk_message_dialog_new_with_markup by default, and add an - overloaded ctor that lets you use the non-markup version. - - * gtk/Gtk.metadata: hide the GtkMessageDialog ctors so we don't - get ellipsis warnings about them. - - * sample/GtkDemo/DemoApplicationWindow.cs: - * sample/GtkDemo/DemoDialog.cs: simplify the MessageDialog usage; - don't need to call String.Format separately now. - -2005-01-18 Mike Kestner <mkestner@novell.com> - - * generator/Method.cs : deal with owned retvals. - * generator/ReturnValue.cs : add Owned prop. - * gnome/Gnome.metadata : mark Thumbnail.ScaleDownPixbuf return owned. - [Fixes #71335] - -2005-01-18 Mike Kestner <mkestner@novell.com> - - * gtk/gtk-api.raw : regen. - * parser/gapi2xml.pl : deal with G_GNUC_PRINTF. - -2005-01-17 Mike Kestner <mkestner@novell.com> - - * gtk/Style.custom : add Light, LightColors, Mid, MidColors, Dark, - and DarkColors. - * gtk/glue/style.c : add get_light and get_dark - -2005-01-17 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide Stock. - * gtk/Makefile.am : add new file. - * gtk/StockManager.cs : stock item management methods. - -2005-01-14 Dan Winship <danw@novell.com> - - * glib/Object.cs (ConnectDefaultHandlers): Don't call a signal's - ConnectionMethod if it's already been called for a superclass of - the current class. #71278 - -2005-01-13 Zac Bowling <zac@zacbowling.com> - - * makefile.win32 : new "gac" target for automatic for gacutil calls, - added copying of gtk-sharp.snk to each folder being built to fix fresh - builds and after cleaning, added support for switching C# - compilers, and added handling of spaces in filenames for mcs builds - * gtkdotnet/makefile.win32 : add one more reference to fix mcs builds. - -2005-01-13 Mike Kestner <mkestner@novell.com> - - * configure.in : make vte check conditional on gnome. - * gtkdotnet/Makefile.am : add some references. - -2005-01-13 Dan Winship <danw@novell.com> - - * generator/ObjectGen.cs: Make ContainerChild constructors - "protected internal" rather than just "internal", so the classes - can be subclassed nicely. - -2005-01-13 Zac Bowling <zac@zacbowling.com> - - * gtkdotnet/makefile.win32 : fixed references to build on Win32 - -2005-01-12 Mike Kestner <mkestner@novell.com> - - * sample/gnomevfs/Makefile,am : conditionally build. - -2005-01-12 Mike Kestner <mkestner@novell.com> - - * sample/gnomevfs/*.cs : s/Test.Gnome.VFS/TestGnomeVfs to avoid - namespace collision problems with current mcs. - -2005-01-11 Ben Maurer <bmaurer@ximian.com> - - * configure.in: There might be multiple S.D assemblies (eg, if you - build the 2.0 crap, you get a 1.1 and a 2.0). So use head -n1 when - looking at gacutil - -2005-01-11 Mike Kestner <mkestner@novell.com> - - * configure.in : add test for System.Drawing. expand gtkdotnet. - * Makefile.am : add gtkdotnet. - * makefile.win32 : add gtkdotnet. - * gtkdotnet/* : new .Net extensions assembly. Moved the sample - sysdraw.cs Graphics class in here under the Gtk.DotNet namespace. - * sample/sysdraw.cs : moved to gtkdotnet/Graphics.cs. - * sample/drawing-sample.exe.config.in : killed. - * sample/DrawingSample.cs : use Gtk.DotNet.Graphics. - * sample/Makefile.am : make drawing-sample.exe build conditional - on gtk-dotnet presence. - -2005-01-11 Mike Kestner <mkestner@novell.com> - - * gdk/Window.custom : add AddFilterForAll and RemoveFilterForAll - methods to handle the window==null native case. - [Fixes #71065] - -2005-01-11 Mike Kestner <mkestner@novell.com> - - * glib/Argv.cs : add automatic progname handling. - * gdk/Global.custom : kill obsolete warnings by using GLib.Argv. - -2005-01-11 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : kill Colors since its methods are deprecated - and it doesn't exist in 1.0. - -2005-01-08 Ben Maurer <bmaurer@ximian.com> - - * Makefile.include (install-data-local, uninstall-local): make - this actually work for things that are disabled. - -2005-01-08 Mike Kestner <mkestner@novell.com> - - * configure.in : kill a ton of redundant stuff. - * AssemblyInfo.cs.in : moved here, only need one. - * Makefile.include : rules for building generated assemblies. - * Makefile.am : removed gtk-sharp-2.0.pc handling. - * */AssemblyInfo.cs.in : killed - * */Makefile.am : refactored out a ton of rules to an include. - * */*-pc.in : added Cflags entries pointing to the gapi files. - * generator/CodeGenerator.cs : add -I: synonym --include. - * gnomevfs/gnome-vfs-api.raw : remamed from gnomevfs-api.raw. - * gtk/gtk-sharp-2.0.pc.in : moved here from top. - * parser/gapi-fixup.cs : add --symbol arg to merge sym files. - * sources/gtk-sharp-sources.xml : remamed gnome-vfs-api.raw. - -2005-01-07 Mike Kestner <mkestner@novell.com> - - * sample/Makefile.am : mdb cleanup. - * sample/GtkDemo/Makefile.am : mdb cleanup. - -2005-01-07 Mike Kestner <mkestner@novell.com> - - * configure.in : check for panelapplet in enable_gnome and remove - all the stuff for a separate panelapplet-sharp assembly. - * Makefile.am : remove panelapplet dir from build. - * gnome/BonoboUIVerb.cs : moved from panelapplet. - * gnome/Gnome.metadata : add rules from panelapplet. - * gnome/Makefile.am : add new files. - * gnome/PanelApplet.custom : moved from panelapplet. - * gnome/PanelAppletFactory.cs : moved from panelapplet. - * gnome/glue/panelapplet.c : moved from panelapplet. - * gnome/glue/Makefile.am : add new file. - * gnomedb/GnomeDb.metadata : hide a newly parsed "obsolete" type. - * gtk/Gtk.metadata : hide a newly parsed "obsolete" callback type. - * panelapplet : kill dir. - * parser/gapi2xml.pl : update callback name sanity check. - * sources/gtk-sharp-sources.xml : move panelapplet parse into gnome. - * */*-api.raw : regen. - -2005-01-07 Dan Winship <danw@novell.com> - - * gtk/Gtk.metadata: Hide the Gtk.Image ctors generated from - gtk_image_new_from_icon_set and gtk_image_new_from_stock. - - * gtk/Image.custom: Implement them here, taking into account the - fact that the "icon_size" property is mysteriously an int rather - than a Gtk.IconSize. - - * gtk/Makefile.am (customs): add Image.custom - - * gtk/Gtk.metadata: gtk_window_set_focus accepts NULL - -2005-01-06 Larry Ewing <lewing@novell.com> - - * gtk/StockItem.custom: add a ctor for StockItem. - - * gtk/Makefile.am: add StockItem.custom to the build. - -2005-01-06 Dan Winship <danw@novell.com> - - * gtk/Gtk.metadata: Rename gtk_stock_add() back to - Gtk.StockManager.Add like it was in 1.0; Gtk.Stock.Add already - means something else. [#71044] - -2005-01-06 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide GtkSignal and SignalRunType. - -2005-01-06 Mike Kestner <mkestner@novell.com> - - * gnomevfs/gnomevfs-symbols.xml : FileSize is a long long. - * generator/SymbolTable.cs : map longlong to C# long. - -2005-01-05 Mike Kestner <mkestner@novell.com> - - * gtk/gtk-api.raw : regen. - * sources/gtk-sharp-sources.xml : hide xembed.h and gtkxembed.h. - -2005-01-05 Mike Kestner <mkestner@novell.com> - - * gtk/TreeView.custom : add back the TreeCellDataFunc overloads for - backward compat. - * gtk/TreeViewColumn.custom : add back the TreeCellDataFunc overloads for - backward compat. - -2005-01-05 Mike Kestner <mkestner@novell.com> - - * generator/Field.cs : deal with LPGen/LPUGen fields. - -2005-01-05 Mike Kestner <mkestner@novell.com> - - * gtk/gtk-api.raw : regen. - * sources/gtk-sharp-sources.xml : exclude gtkiconthemeparser.h. - [Fixes #70898] - -2005-01-05 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide some internal Image*Data structs. - -2005-01-05 Alp Toker <alp@atoker.com> - - * gtk/TextBuffer.custom : Mark SetText obsolete in favour of the Text - property, and use Text in SetText in the meantime. - -2005-01-04 Mike Kestner <mkestner@novell.com> - - * gtk/gtk-api.raw : regen'd. - * sources/gtk-sharp-sources.xml : exclude file system backend source. - [Fixes #70904, #70897, and #70900] - -2005-01-04 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : mark out params for IMContext.GetSurrounding - and GetPreeditString. - [Fixes #70995] - -2005-01-04 Mike Kestner <mkestner@novell.com> - - * gtk/CellLayout.custom : declare SetAttributes and SetCellDataFunc. - * gtk/CellView.custom : impl SetAttributes and SetCellDataFunc. - * gtk/ComboBox.custom : impl SetAttributes and SetCellDataFunc. - * gtk/EntryCompletion.custom : impl SetAttributes and SetCellDataFunc. - * gtk/Gtk.metadata : hide some methods to be manually implemented. - * gtk/Makefile.am : add new customs. - * gtk/NodeCellDataFunc : use CellLayoutDataFuncNative. - * gtk/TreeView.custom : use CellLayoutDataFunc not TreeCellDataFunc. - * gtk/TreeViewColumn.custom : impl SetAttributes and SetCellDataFunc. - [Fixes #70941] - -2005-01-04 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : set preferred on CellViewMenuItem.NewWithText. - [Fixes #70938] - -2005-01-03 Mike Kestner <mkestner@novell.com> - - * gtk/NodeStore.cs : expose TreeModelFlags.ListOnly if the TreeNode - has ListOnly set. - * gtk/TreeNodeAttribute.cs : add ListOnly named value. - -2004-12-30 Mike Kestner <mkestner@novell.com> - - * glib/Object.cs : mark the Data hashtable obsolete. - -2004-12-30 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide TreeView.InsertColumnWith*. - * gtk/TreeView.cs : manual implementations of InsertColumn overloads - for WithAttributes and WithDataFunc. - -2004-12-30 Alp Toker <alp@atoker.com> - - * README.generator: Close tag fix for example XML. - -2004-12-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * sample/gnomevfs/TestVolumes.cs: Update sample. - -2004-12-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Gnomevfs.metadata: Hide some more API. - * gnomevfs/VfsStreamAsyncResult.cs: Make Done property internal. - * gnomevfs/VolumeMonitor.custom: Hide GList API. - -2004-12-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Directory.cs: PInvoke the _uri methods directory instead of - using the ToString() methods. - * gnomevfs/FileInfo.cs: Make the FileInfoNative field internal. - * gnomevfs/Gnomevfs.metadata: Hide a bunch of unwanted API. - * gnomevfs/Uri.custom: New API. - * gnomevfs/Vfs.cs: Idem. - -2004-12-27 Mike Kestner <mkestner@novell.com> - - * generator/CallbackGen.cs : use ReturnValue and more of Parameter. - * generator/GenBase.cs : remove unused NSElem prop. - -2004-12-27 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Directory.cs: s/uint/FilePermissions/. - * gnomevfs/Gnomevfs.metadata: Make a bunch of API more user-friendly & - C# like. - * gnomevfs/Monitor.cs: Add internal MonitorEventType enum. - * gnomevfs/Uri.custom: Move a bunch of API from Vfs.cs to Uri. - * gnomevfs/Vfs.cs: Only put initialize & shutdown methods in here (plus - some debug API). - * gnomevfs/VfsStream.cs: Use new Uri API. - * sample/gnomevfs/TestUnlink.cs: Fix sample. - -2004-12-27 Mike Kestner <mkestner@novell.com> - - * generator/EnumGen.cs : rework for a single pass thru ChildNodes. - * generator/Parameters.cs : simplify PassAs logic. - * generator/SimpleBase.cs : mark abstract. - -2004-12-27 Mike Kestner <mkestner@novell.com> - - * generator/AliasGen.cs : derive from SimpleBase. - * generator/ConstStringGen.cs : derive from SimpleBase. - * generator/GObjectGen.cs : kill. now uses ManualGen. - * generator/GStringGen.cs : kill. now uses MarshalGen. - * generator/GUnicharGen.cs : kill. now uses MarshalGen. - * generator/LPGen.cs : derive from SimpleGen. - * generator/Makefile.am : update source files. - * generator/ManualGen : make this general for handle types. - * generator/MarshalGen : new CallByName/FromNative formatter class. - * generator/SymbolTable.cs : needed some reorganizing and some - restructuring of types to use MarshalGen. - * generator/TimeTGen.cs : kill. now uses MarshalGen. - -2004-12-26 Mike Kestner <mkestner@novell.com> - - * generator/Makefile.am : add new file. - * generator/SimpleBase.cs : new class for non-generated type mappers. - * generator/*Gen.cs : first refactoring of "Simple" generatable types. - Derive them all from SimpleBase. More to come. - -2004-12-26 Mike Kestner <mkestner@novell.com> - - * generator/CustomMarshalerGen.cs : kill bad idea unused class. - * generator/Makefile.am : remove CustomMarshalerGen.cs. - * generator/Method.cs : remove CustomMarshalerGen reference. - -2004-12-26 Mike Kestner <mkestner@novell.com> - - * generator/*Gen.cs : implement IGeneratable fully on GenBase - with abstract methods where necessary to refactor a ton of redundant - code. - -2004-12-23 Mike Kestner <mkestner@novell.com> - - * glib/ClassInitializerAttribute.cs : new attr for identifying type. - inialization methods to be run by RegisterGType. - * glib/Makefile.am : add file. - * glib/Object.cs : add private method to invoke ClassInitializers. - * gtk/glue/widget.c : some new glue for binding registration. - * gtk/BindingAttribute.cs : new attr for registering key bindings. - * gtk/Makefile.am : add file. - * gtk/Widget.custom : add ClassInitializer method to scan types - for [Binding] and register key bindings. - -2004-12-22 Dan Winship <danw@novell.com> - - * generator/Signal.cs: fix some WriteLine()s that should have been - Write()s - -2004-12-22 Dan Winship <danw@novell.com> - - * sources/gtk-sharp-sources.xml: exclude a bunch of uninstalled - gtk headers. - - * gtk/gtk-api.raw: regen - - * gtk/Gtk.metadata: Remove some explicit hiding of things that - shouldn't have been there anyway. Hide a few types that just show - up as unusable stubs. - -2004-12-22 Mike Kestner <mkestner@novell.com> - - * gdk/gdk-api.raw : update enum values. - * gnome/gnome-api.raw : update enum values. - * gtk/gtk-api.raw : update enum values. - * pango/pango-api.raw : update enum values. - * parser/gapi2xml.pl : pull whitespace out of enum prefixing logic. - [Fixes #70593] - -2004-12-21 Mike Kestner <mkestner@novell.com> - - * glib/Argv.cs : argv marshaling class. - * glib/Makefile.am : add file. - * glib/Marshaller.cs : mark the argv methods obsolete. - * gtk/Application.cs : use GLib.Argv. [Fixes #68812] - -2004-12-21 Dan Winship <danw@novell.com> - - * generator/CallbackGen.cs: - * generator/CodeGenerator.cs: - * generator/ManagedCallString.cs: - * generator/Property.cs: Remove unused vars - - * generator/Method.cs (GetHashCode): have to implement this since - we're overriding Equals. - - * generator/CallbackGen.cs: print a message when generating a - broken struct-returning callback. (Currently affects - GtkSharp.TextSegSplitFuncNative and - GtkSharp.TextSegCleanupFuncNative) - - * gdk/glue/device.c: - * gdk/glue/dragcontext.c: Add missing prototypes - - * gtk/Gtk.metadata: Mark SeparatorToolItem.Draw "new". Re-rename - CheckMenuItem.Toggled to EmitToggled rather than Toggle, since - that's a better description of what it does. - - * gtk/CheckMenuItem.custom: implement a "Toggle" method that does - what the documentation claims it does. - - * gtk/NodeStore.cs: remove unused var - - * gnome/Gnome.metadata: mark DateEdit.Flags, Dialog.Default, and - PropertyBox.State "new". Hide GnomePixmapEntry.GnomeEntry and - GnomePixmapEntry.GtkEntry since they do exactly the same thing as - the methods of the same names inherited from GnomeFileEntry. - - * gnome/glue/canvas-proxy.c: - * gnome/glue/canvas-proxy.h: - * gnome/glue/canvas-proxy-marshal.c: - * gnome/glue/canvas-proxy-marshal.h: - * gnome/glue/canvas-proxy-marshal.list: Remove unused code - - * gnome/glue/Makefile.am (libgnomesharpglue_2_la_SOURCES): update - - * panelapplet/PanelApplet.metadata: mark PanelApplet.Flags "new" - - * sample/CanvasExample.cs: - * sample/CustomCellRenderer.cs: - * sample/CustomNotebook.cs: - * sample/DrawingSample.cs: - * sample/Fifteen.cs: - * sample/GladeTest.cs: - * sample/GtkDemo/DemoHyperText.cs: - * sample/GtkDemo/DemoPixbuf.cs: - * sample/ScribbleXInput.cs: remove unused vars, use - GLib.Timeout.Add rather than the deprecated Gtk.Timeout.Add - -2004-12-21 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Async.cs: - * gnomevfs/Directory.cs: - * gnomevfs/Sync.cs: - * gnomevfs/Vfs.cs: Make the constructors private so they don't show up - in monodoc (these classes aren't meant to be instantiated). - -2004-12-21 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Gnomevfs.metadata: Hide the auto-generated ModuleCallback - stuff in favor of the more developer friendly custom bindings. - * gnomevfs/Makefile.am: - * gnomevfs/ModuleCallbackAuthentication.cs: - * gnomevfs/ModuleCallbackFillAuthentication.cs: - * gnomevfs/ModuleCallbackFullAuthentication.cs: - * gnomevfs/ModuleCallbackSaveAuthentication.cs: - * gnomevfs/ModuleCallbackStatusMessage.cs: Complete the module callback - implementations. - -2004-12-20 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : mark a couple array params. - * generator/Field.cs : remove the MarshalAs hack. We have to - do something much more evil since MarshalAs can't hang. - * generator/ImportSignature.cs : deal with out LP(U)Gen params. - * generator/LPGen.cs : moved from SSizeTGen and generalized. - * generator/LPUGen.cs : moved from SizeTGen and generalized. - * generator/Makefile.am : update sources. - * generator/MethodBody.cs : deal with out LP(U)Gen params. - * generator/Parameters.cs : deal with out LP(U)Gen params. - * generator/SymbolTable.cs : make all longs and size_t types LP(U)Gens. - -2004-12-20 Dan Winship <danw@novell.com> - - * generator/GUnicharGen.cs: generatable for gunichar, using - GLib.Marshaller.CharToGUnichar and .GUnicharToChar [#70704] - - * generator/SymbolTable.cs (SymbolTable): add a GUnicharGen. - - * generator/Makefile.am (sources): add GUnicharGen.cs - - * parser/gapi2xml.pl (addPropElem): g_param_spec_unichar() has - type "gunichar" not "unichar". - - * gtk/gtk-api.raw: Regen - - * glib/Marshaller.cs: Import CharToGUnichar's glue method by the - right name - -2004-12-20 Dan Winship <danw@novell.com> - - * gtk/Gtk.metadata: Don't rename GtkStock to StockManager, hide - Lookup (so we can customize it) and AddStatic (since it can't work - right from managed code), and tweak the params of Add. - - * gtk/Stock.custom: Implement Lookup() using a special - ConstStockItem struct so the p/invoke layer won't try to free - static strings. [#70589] - - * sample/GtkDemo/DemoStockBrowser.cs: update this to work with - that. (It used to crash.) - -2004-12-20 Mike Kestner <mkestner@novell.com> - - * generator/Property.cs : generate Interface properties. - * gtk/ComboBox.custom : remove dup model prop. - * gtk/TreeView.custom : remove dup model prop. - -2004-12-20 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Makefile.am: - * gnomevfs/ModuleCallback.cs: - * gnomevfs/ModuleCallbackAuthentication.cs: - * gnomevfs/ModuleCallbackFullAuthentication.cs: - * gnomevfs/Vfs.cs: Use a custom VfsException for Result errors. - * gnomevfs/VfsException.cs: new custom Exception class. - * sample/gnomevfs/Makefile.am: - * sample/gnomevfs/TestCallback.cs: - - Implement custom bindings for the ModuleCallback mechanism. Atm, only - the GNOME_VFS_MODULE_CALLBACK_AUTHENTICATION and - GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION callbacks are implemented. - Also added a test-case using the full authentication callback (tested - using the sftp: method). [Partially fixes #70602] - -2004-12-18 Mike Kestner <mkestner@novell.com> - - * configure.in : bump version in preparation for 1.9.1 release. - -2004-12-18 Mike Kestner <mkestner@novell.com> - - * gtk/ColorSelectionDialog.custom : fix some incorrect object wrapping - and mark the ColorSelectionButton nested class Obsolete with a heinous - warning message. [Fixes #68450] - -2004-12-18 Mike Kestner <mkestner@novell.com> - - * generator/Field.cs : add MarshalAs attrs for (u)longs. - -2004-12-18 Mike Kestner <mkestner@novell.com> - - * gconf/GConf/ChangeSet.cs : add internal Handle prop. - * gconf/GConf/Engine.cs : new class to expose the default gconf engine - perform changeset commits and reverses. - -2004-12-17 Mike Kestner <mkestner@novell.com> - - * gtk/ListStore.custom : dispose a bunch of GLib.Values. - * gtk/TreeStore.custom : ditto. Reworked and expanded from a patch - by Ben "valgrind-boy" Maurer. [Fixes #69925] - -2004-12-17 Mike Kestner <mkestner@novell.com> - - * glade/XML.custom (BindFields) : support multiple autoconnects - in different roots by not writing null widgets to the tagged - fields. [Fixes #68455] - -2004-12-17 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide Object and Widget.Destroy. - * gtk/Object.custom : manual virtual Destroy impl. - * gtk/Widget.custom : manual virtual Destroy impl. - * gtk/Window.custom : hold a managed ref for all toplevels. Release - it in a Destroy override. Window is frequently subclassed and is - never parented, so this keeps a managed ref around to avoid GC. - [Fixes #70120] - -2004-12-17 Mike Kestner <mkestner@novell.com> - - * gdk/Gdk.metadata : mark out param on Window.GetFrameExtents. - * gdk/WindowAttr.custom : new typed Mask prop. - * gtk/Widget.custom : new typed WidgetFlags prop. mark Flags obsolete. - -2004-12-17 Mike Kestner <mkestner@novell.com> - - * gtk/Makefile.am : add new file. - * gtk/glue/makefile.win32 : add missing file. - * gtk/NodeCellDataFunc.cs : new callback delegate type and marshaler - for NodeStore tree views using GtkTreeCellDataFuncs. - * gtk/NodeStore.cs : add internal GetNode overload by TreeIter. - * gtk/NodeView.cs : add AppendColumn overload that uses data funcs. - * gtk/TreeViewColumn.custom : manual implementation for SetCellDataFunc - to support both TreeIter and ITreeNode models. We need to hold a ref - to a delegate for each cell renderer on a column. [Fixes #63062] - * sample/NodeViewDemo.cs : use a NodeCellDataFunc for one of the - cell renderers in the tree. - -2004-12-17 Dan Winship <danw@novell.com> - - * generator/Field.cs (StudlyName): Fall back to using "cname" if - "name" isn't defined (ie, when using the latest generator against - api files output by an older parser). - -2004-12-17 Dan Winship <danw@novell.com> - - * generator/ClassBase.cs (IgnoreMethod): Don't ignore GetFoo and - SetFoo methods if they aren't in the right form to be turned into - property accessors. (Causes 13 previously ignored methods to now - be wrapped. See doc/ChangeLog.) - - * gtk/Gtk.metadata: Fix up a few of those newly-exposed methods - -2004-12-16 Dan Winship <danw@novell.com> - - * generator/ManagedCallString.cs (Setup, Finish, ToString): Add - new methods to allow arbitrary setup and teardown code around the - managed call. When passing a type with "complicated" marshalling - requirements as a ref or out param, first assign the value to a - temporary variable (in Setup), then pass the temp as the ref or - out param (in ToString), and then assign the new value back to the - original argument (in Finish). - - * generator/Signal.cs: - * generator/SignalHandler.cs: Update to generate correct glue for - signals with "ref" or "out" params. (#70566) - - * generator/VirtualMethod.cs: Update for ManagedCallString change - - * generator/IGeneratable.cs: add comments explaining what each - member does - - * gtk/Gtk.metadata: mark Editable.InsertText's "position" arg pass-by-ref - - * sample/Size.cs: connect to the SizeRequested event and override - it, to test/demo the changes - -2004-12-16 Dan Winship <danw@novell.com> - - * parser/gapi_pp.pl: Don't strip out /*< public >*/ and - /*< private >*/ comments. - - * parser/gapi2xml.pl: Use those comments to determine the - accessibility of struct/object fields, and set the "access" - attribute on fields with non-default accessibiliy (private for - structs, public for objects). Also, output a StudlyName for each - field as well as a c_name. - - * */*-api.raw: Regen - - * generator/Field.cs (StudlyName): Use the parser-generated studly - name rather than studlifying Name, which might have been mangled - to avoid conflicts with an all-lowercase keyword. - (Generate): Respect the access property on all field types rather - than always making certain types public. Don't bother outputting - wrapper properties for private fields, since the only code that - could use them is the generated code, which won't. - - Part of #69514. See doc/ChangeLog for the (very minimal) fallout - from these changes. - -2004-12-16 Mike Kestner <mkestner@novell.com> - - * sample/NodeViewDemo.cs : rework of TreeViewDemo to use NodeStore. - * sample/TreeViewDemo.cs : added some timing and node counting fu. - -2004-12-16 Duncan Mak <duncan@ximian.com> - - * gtk/Makefile.am (sources): Added NodeSelection and NodeView. - * gtk/NodeSelection.cs: New file, an implementation of - TreeSelection that exposes ITreeNodes instead of TreeIters. - * gtk/NodeStore.cs : added internal GetIter and GetPath methods for - NodeSelection. Reworked [TreeNodeValue] lookup logic. - out what the Type of data the store holds. - * gtk/NodeView.cs: New subclass of TreeView utilizing NodeStore and - NodeSelection. - * gtk/TreeIter.custom : new internal UserData prop. - * gtk/TreeNodeValueAttribute.cs: Set AllowMultiple to true. - * gtk/TreeView.custom: Obsoleted constructor that uses a NodeStore as - parameter. NodeView should be used instead. - -2004-12-16 Tambet Ingo <tambet@ximian.com> - - * glib/Opaque.cs : hold a weakref in the hash, not a strong ref. - -2004-12-15 Mike Kestner <mkestner@novell.com> - - * gnome/Gnome.metadata : resolve a collision that was causing - Print class methods to be lost. - -2004-12-13 Mike Kestner <mkestner@novell.com> - - * configure.in : make gtkhtml conditional on enable_gnome. - [Fixes #70502] - -2004-12-09 Mike Kestner <mkestner@novell.com> - - * gtkhtml/HTML.custom : remove obsolete attr for Write overload. - * gtkhtml/HTMLStream.custom : ditto. - -2004-12-09 Mike Kestner <mkestner@novell.com> - - * gtkhtml/HTML.custom : add an back-compat obsolete overload for Write. - * gtkhtml/HTMLStream.custom : add an obsolete overload for Write. - -2004-12-09 Mike Kestner <mkestner@novell.com> - - * generator/Makefile.am : new files. - * generator/MethodBody.cs : fix for length param code. - * generator/SizeTGen.cs : smarter size_t marshaling. - * generator/SSizeTGen.cs : smarter ssize_t marshaling. - * generator/SymbolTable.cs : use the new generatables. - -2004-12-08 John Luke <john.luke@gmail.com> - - * sources/README: update versions of the libs - -2004-12-08 Mike Kestner <mkestner@novell.com> - - * art/Art.metadata : mark some ints as bools. [Fixes #61047] - -2004-12-08 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * sample/Makefile.am: Readded TestVfs.cs back and make it conditional. - * sample/TestVfs.cs: New sample contributed by Tamara Roberson. - [Fixes #70262] - -2004-12-07 Mike Kestner <mkestner@novell.com> - - * gtk/glue/style.c : add missing method and prototype. [Fixes #70216] - -2004-12-07 Mike Kestner <mkestner@novell.com> - - * */*.cs : s/glue-2.0/glue-2 so that dllimport works on win32. - * */*.custom : s/glue-2.0/glue-2 - * */glue/makefile.win32 : s/glue-2.0/glue-2 - * */glue/Makefile.am : s/glue-2.0/glue-2 - -2004-12-06 John Luke <john.luke@gmail.com> - - * gtk/Gtk.metadata: set with_mnemonic as the preferred ctor - * doc/en/Gtk/Expander.xml: update - -2004-12-06 John Luke <john.luke@gmail.com> - - * gtk/Action.custom - * gtk/ActionGroup.custom - * gtk/UIManager.custom - * gtk/Gtk.metadata - * doc/en/Gtk/ActionGroup.xml - * file doc/en/Gtk/Action.xml - * doc/en/Gtk/UIManager.xml: replace List and SList with arrays - and update the docs - -2004-12-06 Mike Kestner <mkestner@novell.com> - - * generator/SymbolTable.cs : add off_t as an IntPtr. - -2004-12-06 Mike Kestner <mkestner@novell.com> - - * generator/SignalHandler.cs : s/[]/Array in BaseName. [Fixes #69383] - -2004-12-06 Mike Kestner <mkestner@novell.com> - - * doc/en/*/*.xml : docs for new GValue members and size_t changes. - * generator/SymbolTable.cs : add ssize_t and make size_t a UIntPtr - instead of the current broken int mapping on 64 bit platforms. - * gtkhtml/HTMLStream.custom : fix size_t related overload. - [fixes #69574] - -2004-12-03 Dan Winship <danw@novell.com> - - * gdk/gdk-symbols.xml: alias GdkBitmap to GdkPixmap [Fixes #68824] - - * gdk/Gdk.metadata: Remove the earlier GdkBitmap hack now that - it's aliased. Also move Gdk.Bitmap.CreateFromData to - Gdk.Pixmap.CreateBitmapFromData - - * gdk/Pixbuf.custom (RenderPixmapAndMask, - RenderPixmapAndMaskForColormap, RenderThresholdAlpha): - s/Bitmap/Pixmap/ - - * sample/GtkDemo/DemoTextView.cs: uncomment the fg/bg stipple - code, since that works now - - * parser/gapi-fixup.cs: Add an "add-node" rule. This turned out to - not actually be needed for this fix, but we know we'll need it - later, so here it is. - -2004-12-03 Jorge Garcia <jgarcia@ac.upc.es> - - * glib/Type.cs: add Int64 and UInt64 support. - * glib/TypeConverter.cs: add Int64 and UInt64 support. - * glib/Value.cs: add Int64 and UInt64 support. - -2004-12-03 Mike Kestner <mkestner@novell.com> - - * gtk/Dialog.custom : correct return value for AddButton overload. - [Fixes #70121] - -2004-12-03 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : mark accel_group null_ok on ImageMenuItem ctor. - [Fixes #69041] - -2004-12-03 Dan Winship <danw@novell.com> - - * gtk/Gtk.metadata: Pass TextIters by ref almost everywhere. - [Fixes #70187]. Kill two varargs warnings. - - * gtk/TextBuffer.custom: Update for that, and also implement - InsertWithTagsByName - - * sample/GtkDemo/DemoHyperText.cs: - * sample/GtkDemo/DemoTextView.cs: Remove kludges for broken - TextIter handling. Also fix the i18n demo bits by translating the - octal-encoded UTF-8 to hex-encoded UTF-16. - -2004-12-03 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide junk methods in Global. [Fixes #60895] - -2004-12-03 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide Visibility enum. [Fixes #60704] - -2004-12-01 Todd Berman <tberman@off.net> - - * generator/StructGen.cs: Check to see if a GType is going to be - generated. If not, generate a GType.Pointer. This fixes bug - #70017. - * glib/TypeConverter.cs: Remove the .IsValueType check, as those - now have GType properties. - * gda/Gda.metadata: Change GdaValue.GType to GdaValue.GdaType. - * doc/en/Gda/Value.xml: Regenerated to reflect new API. - -2004-11-30 Dan Winship <danw@novell.com> - - * sample/GtkDemo/DemoImages.cs: Fix some crashers discovered while - trying to use this as a test case to figure out whether or not I'd - broken Gtk#. Sigh. :) - -2004-11-30 Mike Kestner <mkestner@novell.com> - - * glib/glue/value.c : add back some code lost in the merge of - 2-4-branch. [Fixes #70045] - -2004-11-26 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/ActionEntry.cs: - * gtk/ActionGroup.custom: - * gtk/Gtk.metadata: - * gtk/Makefile.am: - * gtk/RadioActionEntry.cs: - * gtk/ToggleActionEntry.cs: - * gtk/UIManager.custom: - * sample/Actions.cs: Updated to use the new *ActionEntry code. Reflects - testactions.c from gtk+ now. - - Added C# syntactic sugar for easily defining Action's for the UIManager. - Derived from the same ActionEntry structs in gtk+. - -2004-11-22 Dan Winship <danw@novell.com> - - * generator/ClassBase.cs: - * generator/ObjectGen.cs: Move child property handling from - ClassBase to ObjectGen (as suggested by Mike) since it's only - used there - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * generator/InterfaceGen.cs : beginnings of a real - implementation for GInterfaces. Not quite ready yet, - so it's not active in generation. - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * generator/Makefile.am : add new file. - * generator/Method.cs : add Declaration property. - * generator/VirtualMethod.cs : new class to generate virtual - methods for Interfaces and objects. Unfinished. - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * generator/ClassBase.cs : remove a "new" string in the - ChildProp class holder decl to fix build warnings. - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * atk/Atk.metadata : mark an out param on Value. - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * generator/*Gen.cs : add ToNativeReturnType to deal with - the g_free string nonsense in the virtual method case. - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * generator/AliasGen.cs : make this a SimpleGen. - -2004-11-18 Mike Kestner <mkestner@novell.com> - - * parser/gapi2xml.pl : fix a missing semi in a vm regex. - * */*-api.raw : regen with missing vms. - -2004-11-18 Dan Winship <danw@novell.com> - - Redo child property handling; now we generate classes to hold the - child properties for a given widget in a container, and generate - the child properties as properties on those classes. - - * parser/gapi2xml.pl (addPropElem): don't prepend "child_" to - child prop names any more - - * generator/ClassBase.cs (ClassBase): keep childprops separate - from properties - (GenChildProperties): create a subclass of Gtk.ContainerChild - containing the container type's child properties, and override the - Container indexer to return that type. - - * generator/ObjectGen.cs (Generate): call GenChildProperties - - * generator/Property.cs: - * generator/ChildProperty.cs: Simplify these a bunch, since child - properties are now represented as C# properties as well. Also add - [GLib.Property(cname)] and [Gtk.ChildProperty(cname)] attributes. - - * glib/Makefile.am (sources): add PropertyAttribute.cs - - * glib/PropertyAttribute.cs: attribute used to label - GObject properties - - * gtk/Makefile.am (sources): add ChildPropertyAttribute.cs - - * gtk/gtk-api.raw: regenerate for parser changes (remove - "Child"/"child_" from child property names). - - * gtk/ChildPropertyAttribute.cs: attribute used to label - GtkContainer child properties - - * gtk/Container.custom: define the ContainerChild class, and an - indexer to return instances of it. - -2004-11-17 Jorn Baayen <jorn@nl.linux.org> - - * gtk/FileChooserDialog.custom : set TransientFor, not Parent. - [Fixes #69626] - -2004-11-17 Mike Kestner <mkestner@novell.com> - - * gnome/Makefile.am : kill unused file. - * gnome/voidObjectAffineSVPintSignal.cs : kill old file. - -2004-11-17 Mike Kestner <mkestner@novell.com> - - * generator/Makefile.am : add new file. - * generator/Method.cs : refactoring to use ReturnValue. - * generator/MethodBody.cs : remove unnecessary code. - * generator/ReturnValue.cs : class for redundant retval handling. - * generator/Signal.cs : refactoring for ReturnValue. - * generator/SignalHandler.cs : refactoring for ReturnValue. - -2004-11-16 Dan Winship <danw@novell.com> - - * glib/Value.cs: add new constructors for enum and boxed values - that take the name of the type rather than an object/property - name pair; this way they work for both GObject properties and - GtkContainer child properties. - - * glib/glue/value.c (gtksharp_value_create_from_type_name): glue - for that - - * glib/Opaque.cs (GetOpaque): Fix this. - - * generator/Property.cs (Generate): Use the new GLib.Value - constructors. (Fixes setting of enum-valued child properties.) - -2004-11-15 Dan Winship <danw@novell.com> - - * gtk/glue/container.c (gtksharp_container_get_focus_child): New - glue method to get container->focus_child - - * gtk/Gtk.metadata: hide SetFocusChild - - * gtk/Container.custom (FocusChild): implement with both getter - and setter - -2004-11-15 Mike Kestner <mkestner@novell.com> - - * gtk/Gtk.metadata : hide the Get/Set Color methods that are marked - deprecated but didn't exist in 1.0. - -2004-11-13 Duncan Mak <duncan@ximian.com> - - * generator/SymbolTable.cs: Add support for GDestroyNotify, so - that `gtk_cell_layout_set_cell_data_func' will be generated in - Gtk.ComboBox. - -2004-11-13 Mike Kestner <mkestner@novell.com> - - * */*-api.raw : rerun the parser for new vm-age and cleanups. - * parser/gapi_pp.pl : suppress union types, since we can't generate - them. smarter get_type regex. ignore #errors. - * parser/gapi2xml.pl : generate vm elements for GInterfaces. Deal - with G_CONST_RETURN in vms. deal with "struct _foo" types in method - prototypes. - * gtk/ComboBox.custom : remove now correctly generated dllimport. - -2004-11-13 Mike Kestner <mkestner@novell.com> - - * sources/gda.patch : fix broken signal defs. - * sources/gnomedb.patch : fix broken signal defs. - * sources/Makefile.am : apply new patches, and dist some others. - -2004-11-12 Mike Kestner <mkestner@novell.com> - - * parser/gapi_pp.pl : fix multi-line extern parsing. - -2004-11-12 Mike Kestner <mkestner@novell.com> - - * parser/gapi_pp.pl : fix a struct parsing bug. - -2004-11-12 Mike Kestner <mkestner@novell.com> - - * sources/gtk-sharp-sources.xml : exclude a couple more pango headers. - -2004-11-09 Mike Kestner <mkestner@novell.com> - - * */Makefile.am : make the Obsolete warnings shaddup. - -2004-11-09 Mike Kestner <mkestner@novell.com> - - * configure.in : conditional stuff for gnomevfs - * doc/Makefile.am : conditionally update panelapplet and gnomevfs. - * doc/en/*/* : update to add PanelApplet and Gnome.Vfs stubs. - * gnomevfs/Makefile.am : make conditional - -2004-11-08 Dan Winship <danw@novell.com> - - * glib/Object.cs (CreateNativeObject): virtualize - (Object(GType)): Mark this ctor Obsolete - - * gtk/Gtk.metadata: disable the generated GType ctor on Gtk.Widget - - * gtk/Widget.custom (Widget, CreateNativeObject, - Widget_ParentSet): Connect to our own ParentSet event from - CreateNativeObject and the GType ctor, and keep a static Hashtable - of parented widgets, so that adding a managed widget to a - container keeps both the GObject and the managed object alive. - - * generator/ObjectGen.cs (GenCtors): handle the disable_gtype_ctor - flag. Also, mark GType ctors [Obsolete] - - * generator/ChildProperty.cs: - * generator/Property.cs: Fix child property names. - -2004-11-07 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Gtk.metadata: Fix some TreeModelFilter stuff (similar to - TreeModelSort). - -2004-11-05 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/*.cs: Add copyright/LGPL header. - * gnomevfs/*.custom: Idem. - * gnomevfs/Mime.cs: Obsolete, replaced by MimeType.cs. - * gnomevfs/MimeActionType.cs: Obsolete, generated now. - * gnomevfs/OpenMode.cs: Idem. - * gnomevfs/Result.cs: Idem. - * gnomevfs/SeekPosition.cs: Idem. - -2004-11-05 Dan Winship <danw@novell.com> - - * parser/gapi2xml.pl (parseInitFunc, addPropElem): handle - GtkContainer child properties - - * generator/Property.cs: - * generator/ChildProperty.cs: make Property subclassable and add a - "ChildProperty" subclass. - - * generator/Makefile.am (sources): add ChildProperty.cs - - * generator/ClassBase.cs: handle "childprop" nodes by creating - ChildProperty objects. - - * glib/Value.cs (explicit operator EnumWrapper): use - g_value_get_flags() rather than g_value_get_enum() when - appropriate. - - * glib/glue/value.c (glibsharp_value_holds_flags): glue for that - - * gtk/gtk-api.raw: regen to pick up child properties - - * gtk/Gtk.metadata: - * gtk/Container.custom: hide the auto-generated - Gtk.Container.ChildGetProperty and implement a nicer one by hand. - - * gtk/glue/container.c (gtksharp_container_child_get_property): - utility function to set up an appropriate GValue for us - -2004-11-05 Tambet Ingo <tambet@ximian.com> - - * generator/OpaqueGen.cs: Add optional "parent" attribute to Opaque - types. - -2004-11-04 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Directory.cs: Add async GetEntries Uri alias. - * gtk/FileChooserDialog.custom: Add nice custom properties for Uris. - ListFilters, ListShortcutFolders and ListShortcutFolderUris. - * gtk/FileChooserWidget.custom: Idem. - * gtk/Gtk.metadata: Idem. - -2004-11-04 Todd Berman <tberman@off.net> - - * glib/ListBase.cs: In Empty, call FreeList, not Dispose. - -2004-11-04 Todd Berman <tberman@off.net> - - * glib/ListBase.cs: Make sure to properly check if it is a - GLib.Object subclass. - -2004-11-04 Todd Berman <tberman@off.net> - - * doc/en/GLib/ListBase.xml: Add documentation for ListBase.Empty - * glib/ListBase.cs: Add ListBase.Empty, frees the children and the - list. - * glib/Markup.cs: Fix Alex's tomboy crash, sending -1 instead of - Length. - * gtk/FileChooserDialog.custom: - * gtk/FileChooserWidget.custom: properly free the list. - -2004-11-03 Todd Berman <tberman@off.net> - - * gtk/FileChooserDialog.custom: - * gtk/FileChooserWidget.custom: Properly implement .Filenames. The old - code was a really bad c&p job. - -2004-11-02 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/AsyncDirectoryLoadCallback.cs: - * gnomevfs/AsyncDirectoryLoadCallbackNative.cs: - * gnomevfs/Directory.cs: Implement asynchronous directory loading. - * gnomevfs/FileInfo.cs: Clear the FileInfoNative struct in the - destructor. - * gnomevfs/Makefile.am: Add new callback files. - * sample/gnomevfs/TestDirectory.cs: Add async test. - -2004-11-01 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Directory.cs: New Create and Delete methods. Free the - FileInfo List returned by gnome_vfs_directory_list_load. - * gnomevfs/FileInfo.cs: Copy the FileInfoNative struct so the original - can be properly freed. - * gnomevfs/Vfs.cs: Move MakeDirectory and RemoveDirectory to Directory. - -2004-11-01 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Directory.cs: Bind gnome_vfs_directory_list_load as a static - FileInfo[] GetEntries (uri) method. - * gnomevfs/FileInfo.cs: Add internal FileInfoNative constructor to - create a FileInfo class based on an existing FileInfoNative struct. - * gnomevfs/Makefile.am: - * sample/gnomevfs/Makefile.am: - * sample/gnomevfs/TestDirectory.cs: - -2004-10-30 Todd Berman <tberman@off.net> - - * gtk/ComboBox.custom: - * gtk/FileChooserDialog.custom: - * gtk/FileChooserWidget.custom: Fix c&p error with filename. - -2004-10-29 Todd Berman <tberman@off.net> - - * gtk/ComboBox.custom: Add a header. - * gtk/FileChooserDialog.custom: Add subclassing support, and a header. - * gtk/FileChooserWidget.custom: Add a header. - -2004-10-29 Todd Berman <tberman@off.net> - - * gtk/FileChooserDialog.custom: Add Filenames property to return - the data as a string[] instead of a GSList. - * gtk/FileChooserWidget.custom: Same as above. - * gtk/Makefile.am: Add FileChooserWidget.custom - -2004-10-30 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * sources/gtk-sharp-sources.xml: Invalid XML due to unremoved --> - closing comment tag. - -2004-10-29 Todd Berman <tberman@off.net> - - * gtk/FileChooserDialog.custom: Allow a null parent. - -2004-10-29 Todd Berman <tberman@off.net> - - * gconf/GConf/gconf-sharp-2.0.pc.in: s/PACKAGE/PACKAGE_VERSION/ to fix - -pkg:gtk-sharp - -2004-10-29 Todd Berman <tberman@off.net> - - * gtk-sharp-2.0.pc.in: s/PACKAGE/PACKAGE_VERSION/ to fix -pkg:gtk-sharp - -2004-10-26 Dan Winship <danw@novell.com> - - * gdk/Gdk.metadata: Remap all "out Gdk.Bitmap" params to be - Gdk.Pixmaps instead, because the former will crash. Also fix the - "data" param to Pixmap.CreateFromXpmD and - Pixmap.ColormapCreateFromXpmD - - * gtk/Style.custom (TextAAGC, SetTextAAGC, LightGC, SetLightGC, - DarkGC, SetDarkGC, MidGC, SetMidGC): add these to go along with - BaseGC, SetBaseGC, etc. - - * gtk/glue/style.c: add the glue methods needed for the above - -2004-10-21 Mike Kestner <mkestner@ximian.com> - - * generator/SymbolTable.cs : map unsigned int to uint. [Fixes #67732] - -2004-10-21 Mike Kestner <mkestner@ximian.com> - - * configure.in : guard against broken installs where enable_gnome - fails but enable_gnomedb succeeds. [Fixes #67986] - -2004-10-20 Dan Winship <danw@novell.com> - - * gdk/Window.custom: add a new constructor that takes a - Gdk.WindowAttributesType rather than an int for attributes_mask. - -2004-10-18 Dan Winship <danw@novell.com> - - * generator/OpaqueGen.cs: Don't build the (IntPtr raw) constructor - if "disable_raw_ctor" is set on the opaque type. - - * gtk/Gtk.metadata: Make GtkTargetList opaque (fixes a crash in - Gtk.Drag.Begin), hide the generated constructor and ref/unref - methods, and fix up the interpretation of AddTable. - - * gtk/TargetList.custom (TargetList, ~TargetList): Implement the - suppressed constructors and add a finalizer, which handle - refcounting the underlying struct. - (Add, Find, Remove): convenience overloads that take string - instead of Gdk.Atom. - - * gtk/Makefile.am (customs): add TargetList.custom - -2004-10-07 Mike Kestner <mkestner@ximian.com> - - * gdk/Makefile.am : add missing custom file. - * gdk/Pixmap.custom : add overloads for *CreateFromXPM* methods which - default transparency mask and color. - -2004-10-07 Todd Berman <tberman@off.net> - - * gtk/Gtk.metadata: Mark ComboBox.GetActiveIter as an out param. - -2004-10-06 John Luke <john.luke@gmail.com> - - * gtk/Action.custom: add overload for string, string, null, null - * gtk/UIManager.custom: add overload to get the UI from a resource - * gtk/Makefile.am: add the 2 new custom files - * sample/Action.cs: remove using GtkSharp, make ui_info const, quit on Quit - -2004-10-05 Todd Berman <tberman@off.net> - - * gtk/ComboBox.custom: Add SetCellDataFunc to allow you to set a - CellLayoutDataFunc on a ComboBox. - -2004-10-05 Todd Berman <tberman@off.net> - - * gtk/ComboBox.custom: new file, to allow get/set access to 'model'. - * gtk/Makefile.am: add ComboBox.custom. - -2004-10-05 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide Selection.GetTargets. - * gtk/SelectionData.custom : impl Targets prop and add Selection, - Target, and Type field accessors. - * gtk/glue/selectiondata.c : field accessor glue. - -2004-10-04 Todd Berman <tberman@off.net> - - * Merge forward patch from Miguel to fix delegate marshalling in - 1.1.1. Original Changelog follows - -2004-10-04 Todd Berman <tberman@off.net> - - * */*.pc.in: Fix the Requires to use -2.0 - -2004-09-29 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide some ellipsis methods, add pass_as attrs. - * gtk/Object.custom : new IsFloating property. - * gtk/glue/object.c : new gtksharp_object_set_floating glue. - -2004-09-29 Mike Kestner <mkestner@ximian.com> - - * generator/GStringGen.cs : new generatable impl for GStrings. - * generator/InterfaceGen.cs : better error reporting. - * generator/Makefile.am : add new source file. - * generator/Method.cs : better error reporting. - * generator/SymbolTable.cs : add new GString igen. - -2004-09-29 Mike Kestner <mkestner@ximian.com> - - * glib/GString.cs : new marshaling class for GStrings. Used by - generator to map GString params and returns onto managed strings. - * glib/Makefile.am : add new file. - -2004-09-27 Mike Kestner <mkestner@ximian.com> - - * gtk/Button.custom : add a ctor (Widget). reworked from patch by - John Luke. - [Fixes #66228] - -2004-09-26 Mike Kestner <mkestner@ximian.com> - - * glib/Idle.cs : proxy hash keys are uints, not ints. - -2004-09-24 Mike Kestner <mkestner@ximian.com> - - * gtk/Bin.custom : make Child get/set. - * gtk/Gtk.metadata : hide the Bin.get_child method. - [Fixes #66232] - -2004-09-23 Mike Kestner <mkestner@ximian.com> - - * gtk/Widget.custom : new OnSetScrollAdjustments VM. - * gtk/glue/widget.c : glue for new VM. - -2004-09-18 Miguel de Icaza <miguel@ximian.com> - - * glib/Source.cs: Add new base class to hold the method to be - called, and the proxy handler we use to keep references to them - and avoid a collection. - Exposes a new variables that references all the active Timeouts - and Idle handlers to avoid collection/ - * glib/Timeout.cs: Implement TimeoutProxy that acts as a filter to - remove the proxy when the timeout is removed. - Register a TimeoutProxy when we create a timeout. - * glib/Idle.cs: Implement IdleProxy that acts as a filter to - remove the proxy when the idle handler is removed. - Register an IdleProxy when we create a timeout. - -2004-09-17 Mike Kestner <mkestner@ximian.com> - - * configure.in : bump version and tag for 1.0.2. - -2004-09-17 Mike Kestner <mkestner@ximian.com> - - * configure.in : bump version and tag for 1.0.2. - -2004-09-17 Mike Kestner <mkestner@ximian.com> - - * configure.in : use either gtkhtml 3.0 or 3.2 - -2004-09-14 Mike Kestner <mkestner@ximian.com> - - * gdk/* : remaining API audit fixes. - -2004-09-09 Mike Kestner <mkestner@ximian.com> - - * gdk/Device.custom : manual GetHistory impl. - * gdk/Display.custom : manual GetPointer overloads. - * gdk/Gdk.metadata : hides and array params. - * gdk/Makefile.am : add new file. - * gdk/TextProperty.cs : new manual impl of methods. - -2004-09-03 Mike Kestner <mkestner@ximian.com> - - * configure.in : expand new doc/updater makefile - * gtk/Gtk.metadata : hide Init.Check and AbiCheck*. - * gtk/Init.custom : manual Init.Check impl. - * gtk/Makefile.am : add Init.custom. - -2004-08-31 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : mark out params on *CreateWithXpm*. - [Fixes #61116] - -2004-08-31 Mike Kestner <mkestner@ximian.com> - - * gtk/NodeStore.cs : add GType prop to expose native gtype. - [Fixes #61226] - -2004-08-31 Mike Kestner <mkestner@ximian.com> - - * glib/Marshaller.cs : fix utc offseting for time_tToDateTime. - [Fixes #60960] - -2004-08-30 Tambet Ingo <tambet@ximian.com> - - * glib/ListBase.cs : indexing bugfix for CopyTo. - -2004-08-28 John Luke <john.luke@gmail.com> - - * gdk/Gdk.metadata: change Gdk.KeyVal name return-type from - gchar* to const-gchar*, so we do not try to modify it (call gfree). - [Fixes #64421] - -2004-08-27 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Async.cs: Add Priority enum. Add methods which take an Uri - object (similar to Sync methods). - * gnomevfs/Vfs.cs: Add Truncate bindings. - * gnomevfs/VfsStream.cs: Major fixes. Don't use the AsyncWaitHandle for - blocking until an operation has finished. Fix (a)sync reading & writing. - You either use sync/async throughout the code. Can't mix sync and async - gnome-vfs method calls (different Handle objects). - * gnomevfs/VfsStreamAsyncResult.cs: Throw NotSupportedException when - AsyncWaitHandle property is accessed. - * sample/gnomevfs/Makefile.am: New test programs. - * sample/gnomevfs/TestAsync.cs: - * sample/gnomevfs/TestAsyncStream.cs: - * sample/gnomevfs/TestSyncStream.cs: - -2004-08-26 Manuel V. Santos <mvsl@telefonica.net> - - * gdk/Device.custom : glue to expose object fields. - * gdk/DeviceAxis.custom : expand the ToString to incl use: - * gdk/EventButton.custom : fix for Axes prop. - * gdk/EventMotion.custom : fix for Axes prop. - * gdk/Gdk.metadata : hide some accessors on Device. - * gdk/Makefile.am : add new custom. - * gdk/glue/Makefile.am : add new .c - * gdk/glue/makefile.win32 : add new .o - * gdk/glue/device.c : ditto. - * gtk/InputDialog.custom : glue to expose button fields. - * gtk/Makefile.am : add new custom. - * gtk/glue/Makefile.am : add new .c - * gtk/glue/makefile.win32 : add new .o - * gtk/glue/inputdialog.c : ditto. - * sample/ScribbleXInput.cs : new sample using extension events. - -2004-08-25 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs : use typeof instead of Type.GetType to - specify the event args type. - * glib/ObjectManager.cs : beef up the type lookup code using - Assembly.LoadWithPartialName to fix a very popular win32 bug. - [Fixes #61139 and friends] Thanks to John Luke for expert - patch testing on win32. - -2004-08-25 John Luke <john.luke@gmail.com> - - * glib/MainLoop.cs: MainLoop implementation by Jeroen - [Fixes #61493] - -2004-08-24 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : kill TreeDataList and TreeDataSortHeader - internal types. - -2004-08-24 Larry Ewing <lewing@ximian.com> - - * gtk/Gtk.metadata : Style.PaintPolygon has an array of points. - -2004-08-24 John Luke <john.luke@gmail.com> - - * gtk/Makefile.am: add Menu.custom - * gtk/Menu.custom: new custom for Popup () overload - [Fixes #60668] - * rsvg/Pixbuf.custom: new custom file - * rsvg/Makefile.am: add Pixbuf.custom to build - * rsvg/Tool.cs: remove double ; that cause warnings - * rsvg/rsvg-sharp.pc.in: add Requires: gtk-sharp art-sharp - [Fixes #60894] - * gdk/PixbufLoader.custom: add Write () overload - [Fixes #62681] - -2004-08-24 Larry Ewing <lewing@ximian.com> - - * gdk/Pixbuf.custom : add RenderThresholdAlpha overload which defaults - to the entire pixbuf width/height. - [Fixes #60703] - -2004-08-24 Mike Kestner <mkestner@ximian.com> - - * gdk/Drawable.custom : add a DrawPolygon overload with bool filled - and mark the old int filled overload Obsolete. - [Fixes #60702] - -2004-08-23 Todd Berman <tberman@off.net> - - * panelapplet/BonoboUIVerb.cs: - * panelapplet/ContextMenuItem.cs: - * panelapplet/Makefile.am: - * panelapplet/PanelApplet.custom: Remove the ContextMenuItem and the - need for the glue. Add BonoboUIVerb to directly call the setup_menu - function. Leave the glue library for now, as I think getting the - proper orientation stuff setup will require some glue work. - * sample/panelapplet/testapplet.cs: Update sample to reflect new - api. Need to make this installable. - -2004-08-22 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Makefile.am: Remove ADDITIONAL_API variable. - -2004-08-20 Mike Kestner <mkestner@ximian.com> - - * atk/Atk.metadata : mark an array param on Relation ctor. - -2004-08-19 Borja Sanchez Zamorano <borsanza@yahoo.es> - - * gtk/Gtk.metadata : hide some methods on TextBuffer. - * gtk/TextBuffer.custom : pass -1 for the text length to some - more methods. - -2004-08-19 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Makefile.am: Add Monitor.cs. - * gnomevfs/Monitor.cs: New custom class wrapping the gnome_vfs_monitor_* - methods. - * sample/gnomevfs/Makefile.am: Added TestMonitor.cs. - * sample/gnomevfs/TestMonitor.cs: Test case for using the new Monitor - class. - -2004-08-18 John Luke <john.luke@gmail.com> - - * AUTHORS: fix my name - * glade/XML.custom: remove doc comments (in monodoc) - add overload ctor for the most common case so far - [Fixes #62238] - -2004-08-18 John Luke <john.luke@gmail.com> - - * pango/Pango.metadata : hide a couple methods on Layout. - * pango/Layout.custom : impl SetText and SetMarkup w/ length=-1. - [Fixes #63057] - -2004-08-18 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : unhide ExpanderStyle. - * doc/en/Gtk/Style.xml : doc PaintExpander. - * doc/en/Gtk/ExpanderStyle.xml : new enum docs. - [Fixes #60480] metadata patch from Jeroen Zwartepoorte. - -2004-08-17 Mike Kestner <mkestner@ximian.com> - - * pango/Pango.metadata : metadata for the pango audit. - * pango/*.custom : customizations to fix audited API. - * doc/en/* : docs for some api changes and additions. - * glib/Marshaller.cs : some gunichar marshal-fu. - * glib/glue/unichar.c : a new glue method. - -2004-08-14 Todd Berman <tberman@off.net> - - * gnomevfs/VfsStream.cs: if ErrorEof is returned in Read, return 0 - instead of throwing an exception. - -2004-08-13 John Luke <john.luke@gmail.com> - - * gtk/Gtk.metadata: mark Gtk.StockManager.Lookup param as ref - patch by jaspervp@gmx.net (Jasper van Putten) - [Fixes #61893] - -2004-08-13 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide Insert and SetText for manual impl. - * gtk/TextBuffer.custom : pass -1 for length to Insert and SetText. - Adapted from a patch by borsanza@yahoo.es (Borja Sanchez Zamorano). - [Fixes #62985] - -2004-08-10 Todd Berman <tberman@off.net> - - * gnomevfs/AssemblyInfo.cs.in: use the .snk, not the .pub. - -2004-08-10 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * glib/MainLoop.cs: - * gnomevfs/.cvsignore: - * gnomevfs/Async.cs: - * gnomevfs/FileInfo.cs: - * gnomevfs/Gnomevfs.metadata: - * gnomevfs/Makefile.am: - * gnomevfs/MimeType.cs: - * gnomevfs/Sync.cs: - * gnomevfs/Uri.custom: - * gnomevfs/VfsStream.cs: - * gnomevfs/VfsStreamAsyncResult.cs: - * gnomevfs/VolumeMonitor.custom: - * gnomevfs/Xfer.cs: - * gnomevfs/XferProgressCallback.cs: - * gnomevfs/XferProgressCallbackNative.cs: - * gnomevfs/filesize.diff: - * gnomevfs/gnomevfs-api.raw: - * sample/gnomevfs/.cvsignore: - * sample/gnomevfs/Makefile.am: - * sample/gnomevfs/TestInfo.cs: - * sample/gnomevfs/TestMime.cs: - * sample/gnomevfs/TestSync.cs: - * sample/gnomevfs/TestSyncCreate.cs: - * sample/gnomevfs/TestSyncWrite.cs: - * sample/gnomevfs/TestUnlink.cs: - * sample/gnomevfs/TestVolumes.cs: - * sample/gnomevfs/TestXfer.cs: - - Commit new gnomevfs files and samples. Also the GLib.MainLoop addition - for programs which don't want to use Gtk.Application.Run (), but still - use the GLib main loop. - -2004-08-04 Raja R Harinath <rharinath@novell.com> - - * configure.in (GTKHTML): Use SOVERSION=11 for GtkHTML 3.1.18. - * gda/Makefile.am ($(API)): Remove duplicated $(srcdir). - -2004-07-30 Mike Kestner <mkestner@ximian.com> - - * parser/gapi2xml.pl : char const * fixes for clahey's gsf binding. - -2004-07-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * */*: merge from HEAD again. - -2004-07-24 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide Window.Destroy. - * gdk/Window.custom : manually impl Destroy since it releases our ref. - * glib/Object.cs : support unset of Raw values. - -2004-07-22 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : allow null for ctor(GLib.Object). - -2004-07-18 Todd Berman <tberman@off.net> - - * panelapplet/Makefile.am: We dont actually use gnome-sharp.dll, remove - it. - -2004-07-16 John Luke <jluke@cfl.rr.com> - - * gtk/Gtk.metadata: - * glade/Glade.metadata: mark return type as const-gchar* for - Gtk.Global.CheckVersion and Glade.Global.ModuleCheckVersion - so Gtk# does not try to free them. Thanks to - jaspervp@gmx.net (Jasper van Putten) for identifying the Glade - part. Fixes bugs #61329 and #60954 - -2004-07-12 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gnome/Gnome.metadata: Fixed typo i to 1 - Remove unnessesary disabledefaultconstructor - * gnome/PrintJob.custom: Change ctor to an overload ctor - -2004-07-11 Todd Berman <tberman@off.net> - - * panelapplet/ContextMenuItem.cs: New struct to hold context menu - item information. - * panelapplet/Makefile.am: added new file. - * panelapplet/PanelApplet.custom: add glue accessor to set the context - menu. - * panelapplet/glue/panelapplet.c: new glue functionality to setup a - context menu. - * sample/panelapplet/testapplet.cs: expand sample to show context menu - code. - -2004-07-10 Todd Berman <tberman@off.net> - - * panelapplet/panelapplet-sharp-2.0.pc.in: fix path. - -2004-07-09 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : mark gc param of Drawable.DrawPixbuf null_ok. - -2004-07-09 Todd Berman <tberman@off.net> - - * Makefile.am: - * configure.in: - Add panelapplet stuff to configure.in and the subdirs. - * generator/ClassBase.cs: - * generator/ObjectGen.cs: - Add a new attribute 'abstract' to allow a class to be defined to be - abstract. PanelApplet.PanelApplet uses this. - * panelapplet/.cvsignore: - * panelapplet/AppletFactory.cs: - * panelapplet/AssemblyInfo.cs.in: - * panelapplet/Makefile.am: - * panelapplet/PanelApplet.cs: - * panelapplet/PanelApplet.custom: - * panelapplet/PanelApplet.metadata: - * panelapplet/panelapplet-api.raw: - * panelapplet/panelapplet-sharp-2.0.pc.in: - * panelapplet/panelapplet-sharp.dll.config.in: - * panelapplet/glue/.cvsignore: - * panelapplet/glue/Makefile.am: - * panelapplet/glue/panelapplet.c: - Initial import of the panelapplet code. This code is largely - untested, and will need a good amount of glue. For sure glue code is - needed for the context menu items. - * sample/panelapplet/CSharpTestApplet_Factory.server: - * sample/panelapplet/monodoc.png: - * sample/panelapplet/testapplet.cs: - A small testcase for the panelapplet. There is no makefile yet, and - the server needs some help as it uses an absolute path that will only - work on my box. When I get back to Toronto (so some point this weekend) - I will fix this code to build/install properly and add a README file - to help with any potential issues. - * sources/Makefile.am: - * sources/gtk-sharp-sources.xml: - Add the panelapplet-sharp stuff to the build here. - -2004-07-06 Todd Berman <tberman@off.net> - - * sources/gtk_tree_model_signal_fix.patch: duh, this is the real patch. - -2004-07-06 Todd Berman <tberman@off.net> - - * sources/Makefile.am: - * sources/gtk_tree_model_signal_fix.patch: a new hacky patch to fix - the signal generation on the tree model structs. - * */*-api.raw: regen. - * glib/Object.cs: merge forward a small patch. - -2004-07-06 Todd Berman <tberman@off.net> - - * Makefile.am: - * configure.in: - * gtk-sharp-2.0.pc.in: - * gtk-sharp.pc.in: - * art/.cvsignore: - * art/Makefile.am: - * art/art-sharp-2.0.pc.in: - * art/art-sharp.pc.in: - * gconf/GConf/.cvsignore: - * gconf/GConf/Makefile.am: - * gconf/GConf/gconf-sharp-2.0.pc.in: - * gconf/GConf/gconf-sharp.pc.in: - * gda/.cvsignore: - * gda/Makefile.am: - * gda/gda-sharp-2.0.pc.in: - * gda/gda-sharp.pc.in: - * glade/.cvsignore: - * glade/Makefile.am: - * glade/glade-sharp-2.0.pc.in: - * glade/glade-sharp.pc.in: - * gnome/.cvsignore: - * gnome/Makefile.am: - * gnome/gnome-sharp-2.0.pc.in: - * gnome/gnome-sharp.pc.in: - * gnomedb/.cvsignore: - * gnomedb/Makefile.am: - * gnomedb/gnomedb-sharp-2.0.pc.in: - * gnomedb/gnomedb-sharp.pc.in: - * gnomevfs/.cvsignore: - * gnomevfs/gnome-vfs-sharp-2.0.pc.in: - * gnomevfs/gnome-vfs-sharp.pc.in: - * gtkhtml/.cvsignore: - * gtkhtml/Makefile.am: - * gtkhtml/gtkhtml-sharp-2.0.pc.in: - * gtkhtml/gtkhtml-sharp.pc.in: - * rsvg/.cvsignore: - * rsvg/Makefile.am: - * rsvg/rsvg-sharp-2.0.pc.in: - * rsvg/rsvg-sharp.pc.in: - * sample/rsvg/Makefile.am: - * vte/.cvsignore: - * vte/Makefile.am: - * vte/vte-sharp-2.0.pc.in: - * vte/vte-sharp.pc.in: - Make gtk-sharp-2.0 parallel installable with gtk-sharp. Now you can - install both and do -pkg:gtk-sharp-2.0 or similar to compile against - the gtk-sharp-2.0 assemblies. - - Basically this change comprised some small configure.in changes to - change the $(PACKAGE) to gtk-sharp-2.0, and check for the appropriate - versions of the gnome 2.6 based libraries. - - Also, every .pc file was renamed -2.0.pc to allow for the parallel - install, and the .cvsignore and Makefile.am rules were updated to - reflect this change. - -2004-07-05 John Luke <jluke@cfl.rr.com> - - * sample/VteTest.cs: improve the scrolling in the sample - and pass on the Environment variables - -2004-07-02 Mike Kestner <mkestner@ximian.com> - - * configure.in : dist the HACKING file from now on. - -2004-07-01 Mike Kestner <mkestner@ximian.com> - - * sample/rsvg/Makefile.am : add an art-sharp /r. - -2004-06-30 John Luke <jluke@cfl.rr.com> - - * vte/Vte.metadata: remove unneeded metadata and add comments - -2004-06-29 Mike Kestner <mkestner@ximian.com> - - * configure.in : bump version to 1.0 and tag. Woot! - -2004-06-25 Mike Kestner <mkestner@ximian.com> - - * */*.cs : add lgpl license blurb and clean up (c)'s. - * */*.custom : add lgpl license blurb and clean up (c)'s. - * */glue/*.c : add lgpl license blurb and clean up (c)'s. - file adds without license from now on are punishable by wedgie. - -2004-06-25 Mike Kestner <mkestner@ximian.com> - - * generator/*.cs : add gpl license blurb and clean up (c)'s. - * parser/* : ditto - * doc/*.cs : ditto - * doc/gen-handlerargs-docs.cs : add little scripty. - -2004-06-25 Mike Kestner <mkestner@ximian.com> - - * configure.in : tag and bump version to 0.99. - -2004-06-23 Todd Berman <tberman@off.net> - - * doc/*/*.xml: s/GtkSharp.SignalArgs/GLib.SignalArgs/; - -2004-06-22 Mike Kestner <mkestner@ximian.com> - - * configure.in : GLIB check for gobject, not glib. - -2004-06-20 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gdk/Gdk.metadata: Fix merging errors. - * gnome/CanvasItem.custom: Idem. - * gtk/Widget.custom: Idem. - -2004-06-20 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * *: Merge with HEAD. - -2004-06-17 Larry Ewing <lewing@ximian.com> - - * gdk/Makefile.am (sources): add Pixdata.custom - * gdk/Pixdata.custom: add new file to fix Serialize. - * gnome/CanvasItem.custom: remove the incorrect custom bindings. - * gnome/Gnome.metadata: stop hiding the AffineRelative and - AffineAbsolute the generator gets them right they are not out - params. - * gdk/Gdk.metadata: mark the Pixdata byte stream as and array hide - the broken serialize method. - -2004-06-18 John Luke <jluke@cfl.rr.com> - - * sample/rsvg/Makefile.am: do not reference gnome-sharp and art-sharp - * sample/rsvg/svghelloworld.cs: rework with just gtk (no gnome deps) - -2004-06-15 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide the button_new_from_stock ctor. - * gtk/Button.custom : add a manual ctor implementation. - -2004-06-14 Mike Kestner <mkestner@ximian.com> - - * configure.in : another "really frozen this time" release. - * gdk/Gdk.metadata : mark a couple array params on Pixbuf.Savev. - * gdk/Pixbuf.custom : add a Save implementation. - -2004-06-14 Mike Kestner <mkestner@ximian.com> - - * configure.in : bump the version to 0.97, tag. - -2004-06-12 Todd Berman <tberman@sevenl.net> - - * glib/ObjectManager.cs: change CreateInstance overload being used - to properly pick up protected ctors. - -2004-06-11 Todd Berman <tberman@sevenl.net> - - * gtk/Container.custom: - * gtk/CellRenderer.custom: - * gnome/CanvasItem.custom: mark Override* private. - * doc/en/*/*.xml: update to remove Override* methods. - -2004-06-11 Mike Kestner <mkestner@ximian.com> - - * doc/en/*/*.xml : update to remove Override* methods. - * generator/Signal.cs : make the Override* methods private. They - should not ever be called manually and it saves about 800 "do not - call this method" doc entries. - -2004-06-11 Mike Kestner <mkestner@ximian.com> - - * configure.in : require mono-0.96, bump the version, tag. - -2004-06-11 Mike Kestner <mkestner@ximian.com> - - * configure.in : remove the mint usage for darwin. - -2004-06-11 Mike Kestner <mkestner@ximian.com> - - * configure.in : deal with a csc-ism in source paths. - * */Makefile.am : use the GENERATED_SOURCES var. - * */glue/Makefile.am : add -no-undefined for win32 dll builds. - -2004-06-10 Mike Kestner <mkestner@ximian.com> - - * configure.in : break the monodoc dep, even though it was optional - it was a pain in the backside. - * doc/Makefile.am : add assemble target to build docs using monodoc. - we now have two manual targets which use monodoc, but aren't required - for the default build (update and assemble). - -2004-06-10 Mike Kestner <mkestner@ximian.com> - - * configure.in : AC_SUBST GACUTIL_FLAGS. require mono-0.95 (though - it's really cvs bleeding edge.) - * * AssemblyInfo.cs.in : s/pub/snk. delaysign=no. - * * Makefile.am : s/pub/snk. portability fixes to csc from John - Luke. Switch to GACUTIL_FLAGS. - * doc/Makefile.am : don't build docs, install raw xml to the prefix. - -2004-06-10 Todd Berman <tberman@sevenl.net> - - * gtk/Container.custom: add C# glue for virtualizing ChildType () - * gtk/glue/container.c: add C glue for virtualizing ChildType () - * gtk/Gtk.metadata: hide Container.ChildType () - * gtk/Widget.custom: Add ClearFlag, and SetFlag convenience methods. - Also add various IsFlag bool properties for checking for flags. - * gtk/glue/widget.c: Fix setting flags. - * doc/*: updated Widget docs. - -2004-06-09 Todd Berman <tberman@sevenl.net> - - * gdk/Gdk.metadata: mark Window.SetBackPixmap as null_ok. - * glib/Object.cs: in set_Raw, if value == IntPtr.Zero, dont put that - in the weakref hashtable, as it creates later issues with gtk+ - returning null and gtk# mistaking if for an object. - -2004-06-08 Mike Kestner <mkestner@ximian.com> - - * gnomedb/Application.cs : add a missing DllImport. - -2004-06-08 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : mark array param on Drawable.*Image. - -2004-06-08 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : mark array param on Drawable.DrawGrayImage. - -2004-06-07 Mike Kestner <mkestner@ximian.com> - - * */Makefile.am : s|--unsafe|/unsafe to remove a mcs-ism that jluke - exposed in his cygwin build patch. - -2004-06-07 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * configure.in: Add pango pkg-config check. - * pango/Layout.custom: Updated custom code to new opaque LayoutLine. - * pango/LayoutLine.custom: Properties for LayoutLine struct fields. - * pango/Makefile.am: - * pango/Pango.metadata: Make LayoutLine opaque [Fixes #59666]. - * pango/glue/.cvsignore: - * pango/glue/Makefile.am: - * pango/glue/layoutline.c: glue for the LayoutLine struct fields. - * pango/glue/makefile.win32: - * pango/glue/win32dll.c: - -2004-06-07 Todd Berman <tberman@sevenl.net> - - * gtk/Widget.custom: expose some easy bool properties for checking - certain WidgetFlags. Make Allocation a settable property. - * gtk/glue/widget.c: bit of glue to make Allocation settable. - * gdk/Window.custom: expose UserData as a usable IntPtr property. - * gdk/Gdk.metadata: hide old GetUserData/SetUserData methods. - * doc/*: ran the updater. - -2004-06-07 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Widget.custom: Add FocusLineWidth property. - * gtk/glue/widget.c: (gtksharp_gtk_widget_set_flags), - (gtksharp_gtk_widget_style_get_int): glue for getting an integer style - property. - -2004-06-07 John Luke <jluke@cfl.rr.com> - - * doc/Makefile.am: install the docs if monodoc is there - -2004-06-07 Peter Williams <peter@newton.cx> - - * configure.in (MONODOC_REQUIRED_VERSION): Fix missing 'test' in - shell if statement. - -2004-06-07 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Widget.custom: Add the AddAccelerator method back which got - removed by accident during the last merge. - * sample/CustomNotebook.cs: New sample showing of a custom Notebook. - -2004-06-07 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * *: Merge with HEAD. - -2004-06-04 Todd Berman <tberman@sevenl.net> - - * glib/Object.cs: ConnectDefaultHandlers needs to look at public api - as well for virtual methods. - * gtk/CellRenderer.custom: - * gtk/Container.custom: - * gnome/CanvasItem.custom: Add DefaultSignalHandler to remove the need - for the static ctor. - -2004-06-04 Todd Berman <tberman@sevenl.net> - - * gnome/CanvasItem.custom: Changed from OnXXX vmethods to XXX vmethods - * gnome/CanvasProxy.cs: removed, unused code - * gnome/GtkSharp.BoundsHandler.cs: removed - * gnome/GtkSharp.DrawHandler.cs: removed - * gnome/GtkSharp.PointHandler.cs: removed - * gnome/GtkSharp.RenderHandler.cs: removed - * gnome/GtkSharp.UpdateHandler.cs: removed - * gnome/Makefile.am: updated to reflect removing of old files. - * gtk/CellRenderer.custom: Changed from OnXXX vmethods to XXX vmethods, - and added StartEditing vmethod - * gtk/Container.custom: Changed from OnForall to ForAll - * gtk/Gtk.metadata: hide CellRenderer.GetSize and StartEditing - * gtk/glue/cellrenderer.c: new glue for CellRenderer.StartEditing - override. - * sample/CustomCellRenderer.cs: updated signatures to reflect new - code. - -2004-06-02 Vladimir Vukicevic <vladimir@pobox.com> - - * gdk/Pixbuf.custom : Pixels prop isn't unsafe - -2004-06-02 Mike Kestner <mkestner@ximian.com> - - * generator/Field.cs : add field hiding, for manual impl. - * generator/StructBase.cs : support disable_new, for manual impl. - -2004-06-01 Jeroen Zwartepoorte <jerone@xs4all.nl> - - * sample/CustomWidget.cs: remove custom GType stuff. - -2004-06-01 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : generate protected ctor () for all - GLib.Objects that don't have any ctors. - * gtk/CellRenderer.custom : remove ctor (). - * gtkhtml/Gtk.metadata : add a disable_void_ctor rule for HTML. - -2004-06-01 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * configure.in: Merge with HEAD again. - * gdk/Gdk.metadata: - * gnome/CanvasItem.custom: - * gtk/Gtk.metadata: - * sample/.cvsignore: - * sample/CustomWidget.cs: Inherit from Gtk.Bin and make it a better - suited sample. - -2004-06-01 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : mark SizeRequest requisition as out, not ref. - [Fixes #59388] - -2004-06-01 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * sample/CustomWidget.cs: Fixed Widget.SizeRequest usage. Works properly - now. - -2004-05-31 Mike Kestner <mkestner@ximian.com> - - * configure.in : Bump version to 0.93 and tag. - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Gtk.metadata: unhide WidgetFlags. - * gtk/Widget.custom: add setter for GdkWindow prop. Add Flags prop. - * gtk/glue/widget.custom: setter for window, accessors for flags. - [Fixes #59337] - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gdk/Gdk.metadata: fix member names in WindowClass. - [Fixes #59336] - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gdk/Gdk.metadata: mark dest rects as out for Intersect and Union. - [Fixes #59341] - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Gtk.metadata: Unhide the GtkWidgetFlags enum. - * gtk/Makefile.am: Remove WidgetFlags.cs. - * gtk/WidgetFlags.cs: Obsolete. - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * sample/CustomWidget.cs: The Gtk.Requisition is passed by reference in - the OnSizeRequested handler. - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * *: Merge changes from HEAD again. - -2004-05-31 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Container.custom: Merged fix for Container.Forall handler. - * gtk/Makefile.am: Added WidgetFlags.cs. - * gtk/Widget.custom: Added Flags property and setter to GdkWindow. - * gtk/WidgetFlags.cs: Enumeration of widget flags (from widget.h). - * gtk/glue/container.c: (gtksharp_container_invoke_gtk_callback): Fixes - for Container.Forall handler. - * gtk/glue/widget.c: (gtksharp_gtk_widget_set_window), - (gtksharp_gtk_widget_get_state), (gtksharp_gtk_widget_get_flags), - (gtksharp_gtk_widget_set_flags): Added new API which is needed to write - custom gtk widgets. - * parser/gapi_pp.pl: Match #if !defined (*_DISABLE_DEPRECATED) properly. - * sample/CustomWidget.cs: new sample for creating a custom Gtk widget. - * sample/Makefile.am: Added CustomWidget.cs sample. - -2004-05-29 Mike Kestner <mkestner@ximian.com> - - * gnome/CanvasItem.custom : for OnUpdate, Art.SVP can be NULL - so treat it as an IntPtr with Zero checks and manual marshaling. - -2004-05-28 Vladimir Vukicevic <vladimir@pobox.com> - - * gtk/CellRenderer.custom: fix GetSize_cb, cell_area can be NULL - coming from Gtk (so can't use ref Gdk.Rectangle, have to use - IntPtr) - -2004-05-28 Miguel de Icaza <miguel@ximian.com> - - * Added System.Drawing samples. - -2004-05-28 Mike Kestner <mkestner@ximian.com> - - * configure.in : bump for next version, tagged 0.92. - -2004-05-28 Vladimir Vukicevic <vladimir@pobox.com - - * gtk/Gtk.metadata : s/out/ref on TreeModel.NextIter. - -2004-05-28 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : adjust to ObjectManager ns change. - * glib/ManagedValue.cs : move to GLib and internalize. - * glib/Object.cs : adjust to ObjectManager ns change. - * glib/ObjectManager.cs : move to GLib. - * glib/TypeConverter.cs : move to GLib. return ManagedValue.GType - when we can't match a type instead of GType.None. - * gtk/*.custom: adjust for new TypeConverter ns and behavior. - -2004-05-28 Mike Kestner <mkestner@ximian.com> - - * gtk/Makefile.am : add new custom. - * gtk/Settings.custom: add props for unparsed API. - -2004-05-27 Mike Kestner <mkestner@ximian.com> - - * glib/Object.cs: mark GType property public. - -2004-05-27 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Gtk.metadata: Hide the GtkCtree class (old gtk+ 1.x junk). - -2004-05-26 Mike Kestner <mkestner@ximian.com> - - * gtkhtml/Gtk.metadata : hide Gtk.HTML the ctors. - * gtkhtml/HTML.custom : new manual impl for ctors. - * gtkhtml/Makefile.am : add new custom [Fixes #59148] - -2004-05-25 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnome/Gnome.metadata: Don't hide the GtkEntry and GnomeEntry - properties. - * gtk/Accel.custom: Add custom methods for backwards compatibility of - the gtk_accel_map_* methods. [Fixes #58954] - -2004-05-25 Dan Winship <danw@ximian.com> - - * gtk/Gtk.metadata : mark a ref param in SizeRequested - -2004-05-25 Mike Kestner <mkestner@ximian.com> - - * */Makefile.am : rm generated/* in generated-stamp target. - -2004-05-25 Mike Kestner <mkestner@ximian.com> - - * configure.in : don't expand the GAPI Makefile. - * parser/Makefile.am : remove SUBDIRS. - * parser/gapi2xml.pl : remove GAPI::Metadata usage. - * parser/GAPI/* : kill. long live gapi-fixup. - -2004-05-25 Mike Kestner <mkestner@ximian.com> - - * gtk/Container.custom : use glue to invoke the GtkCallback in - Forall. - * gtk/glue/container.c : add gtksharp_container_invoke_gtk_callback. - -2004-05-23 Mike Kestner <mkestner@ximian.com> - - * generator/SignalHandler.cs : put back the ObjectGen hack - for param wrapping. [Fixes #58876] - -2004-05-23 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * atk/atk-api.xml: Removed. - * gdk/gdk-api.xml: Idem. - * glade/glade-api.xml: Idem. - * gnome/IconTheme.cs: s/GLibSharp/GLib/ - * gnome/gnome-api.xml: Removed. - * gtk/Adjustment.custom: Obsolete custom property code. - * gtk/glue/adjustment.c: (gtksharp_gtk_adjustment_set_bounds): Idem. - * gtk/gtk-api.xml: Removed. - * pango/pango-api.xml: Idem. - -2004-05-23 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - Merge changes from HEAD since yesterday. - -2004-05-22 Mike Kestner <mkestner@ximian.com> - - * configure.in : require mono-0.91.99. Sorry, but we need to - require mono cvs until beta2 because of some recent breakage in - Gnome.Program custom code while reflecting against the runtime. - -2004-05-22 Todd Berman <tberman@sevenl.net> - - * gnome/Program.custom: Change the Mono.Runtime stuff to reflect - its new internal nature. This fixes MD, gnunit, and all gnome# - programs that were blowing up for no reason. - -2004-05-23 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * *: Merge changes from HEAD again. - -2004-05-22 Radek Doulik <rodo@ximian.com> - - * gtk/TreeView.custom(GetPathAtPos): change Gtk.TreeViewColumn - column parameter to out[put] as gtk_tree_view_get_path_at_pos - returns column address to column parameter - (GetPathAtPos): use GLib.Object.GetObject so that we don't create - new TreeViewColumn object duplicates - -2004-05-19 Mike Kestner <mkestner@ximian.com> - - * gtk/Container.custom : add CallbackInvoke and use it in OnForall. - -2004-05-19 Mike Kestner <mkestner@ximian.com> - - * generator/Makefile.am : add TimeTGen.cs - * generator/SymbolTable.cs : use new TimeTGen. - * generator/StringGen.cs : s/GLibSharp/GLib - * generator/TimeTGen.cs : generatable to marshal time_t. - * glib/time_t_CustomMarshaler.cs : kill - * glib/Makefile.am : remove time_t_CustomMarshaler.cs - * glib/Markup.cs : s/GLibSharp/GLib - * glib/Marshaller.cs : move to GLib namespace. Add methods to - marshal time_t to and from DateTime. - * glib/glue/time_t.c : kill - * glib/glue/Makefile.am : remove time_t.c - * glib/glue/makefile.win32 : remove time_t.o - * gnome/*.custom : use GLib.Marshaller instead of the time_t custom - marshaler. - * gtk/*.custom : s/GLibSharp/GLib - -2004-05-18 Zoltan Varga <vargaz@freemail.hu> - - * glib/time_t_CustomMarshaler.cs: Fix custom marshalling after runtime - changes. - -2004-05-18 Vladimir Vukicevic <vladimir@pobox.com - - * gnome/Print.custom: Cast .Pixels usage to a (byte *) - -2004-05-17 Vladimir Vukicevic <vladimir@pobox.com> - - * gdk/Pixbuf.custom: Changed Pixbuf.Pixels to return an IntPtr instead - of a byte * -- anyone who needs a byte * can do the cast in an unsafe - context already. - -2004-05-18 Todd Berman <tberman@sevenl.net> - - * samples/Scribble.cs: Im bored, you can erase, etc - -2004-05-18 Mike Kestner <mkestner@ximian.com> - - * glib/MissingIntPtrCtorException.cs : new exception to throw if - unable to access an IntPtr ctor on a GLib.Object subclass. We need - an IntPtr ctor to be able to wrap arbitrary object handles. - * glib/Object.cs : have NativeType call LookupGType. - * glib/ObjectManager.cs : throw the new exception in a try/catch. - -2004-05-17 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : Generate a .cctor that calls the assembly's - ObjectManager.Initialize method if the class will need to be registered - with GLib.ObjectManager. Enhance the Initialize method to allow - multiple invocations. - -2004-05-17 Mike Kestner <mkestner@ximian.com> - - * generator/SignalHandler.cs : fix some broken/redundant generation in - the Object/Struct wrapping for sig params. - * glib/Object.cs : internalize/protect lots of API that shouldn't need - to be used by non-subclass/non-glib code. Return GType.Object as GType. - * glib/Value.cs : use internal GLib.Object.NativeType prop. - * sample/TestDnd.cs : use ToString instead of TypeName. - -2004-05-14 Todd Berman <tberman@sevenl.net> - - * glib/Object.cs: make static GLib.Object.LookupGType protected for now. - * gtk/CellRenderer.custom: code to allow for subclassing and - implementing a custom cell renderer. - * gtk/Makefile.am: add custom to build. - * gtk/glue/Makefile.am: add glue to build. - * gtk/glue/cellrenderer.c: glue code to override get_size and render - from cellrenderer. - * sample/CustomCellRenderer.cs: new sample to show how to implement a - custom cell renderer. - * sample/Makefile.am: add CustomCellRenderer sample. - -2004-05-13 Todd Berman <tberman@sevenl.net> - - * *.pc.in: add .dll to the end of the Libs: references, and convert - them to be absolute paths. - -2004-05-11 Mike Kestner <mkestner@ximian.com> - - * *.pc.in : add Requires so that dependent libs are pulled in too. - -2004-05-11 Mike Kestner <mkestner@ximian.com> - - * gconf/GConf/NotifyWrapper.cs : add some defensive null checking. - [fixes #57902] - -2004-05-11 Mike Kestner <mkestner@ximian.com> - - * gtk/SelectionData.custom : add a Set overload without length param. - -2004-05-10 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : mark some Dialog API params as ResponseType - instead of int. - [fixes #58240] - -2004-05-10 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : fix GBoxed GLib.Value setting. - [fixes #58229] - -2004-05-10 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : change return-type on Global.EventsPending - to a bool to avoid compat problems in 2.4. Also rename to - GetEventsPending so that it's generated as a property. - [fixes #58292] - -2004-05-10 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide some ctors and map some prop names. - * gtk/Makefile.am : add new customs. - * gtk/ItemFactory.custom : implement ctor for subclassing. - * gtk/Plug.custom : implement ctors for subclassing. - -2004-05-09 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gdk/Gdk.metadata: Misc fixes for getting Muine to build & run. - * gtk/FileSelection.custom: Add this back. - * gtk/Gtk.metadata: Misc fixes for getting Muine to build & run. - -2004-05-08 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gconf/GConf.PropertyEditors/Makefile.am: Reinclude the OptionMenu - property editor. - * gdk/Gdk.metadata: - * gdk/Pixbuf.custom: Add backwards compatible implementations of - GetFromDrawable, RenderPixmapAndMask and a couple of others which are - now static in gtk+ 2.4. These methods have the same API as the ones - generate for gtk+ 2.2. - * gdk/gdk-api.raw: - * generator/ClassBase.cs: Generate an [Obsolete] tag for deprecated - code. - * generator/ClassGen.cs: Idem. - * generator/Method.cs: Idem. - * generator/ObjectGen.cs: Idem. - * gnome/Gnome.metadata: - * gnome/IconData.cs: - * gnome/IconTheme.cs: GnomeIconTheme inherits directly from GtkIconTheme - in libgnomeui-2.6. This breaks the parser, so it won't generate the - proper code. This is a manual class implementation for backward - compatibility with gtk+ 2.2 version of gtk#. - * gnome/IconTheme.custom: Removed - * gnome/Makefile.am: - * gnome/gnome-api.raw: - * gtk/Gtk.metadata: - * gtk/IconTheme.custom: Added custom methods previously found in - ../gnome/IconTheme.custom. - * gtk/gtk-api.raw: - * pango/pango-api.raw: - * parser/gapi2xml.pl: Check for "deprecated" prefixes and add a - deprecated attribute to the appropriate elements when found. - * parser/gapi_pp.pl: Prefix everything that's in a #ifndef - *_DISABLE_DEPRECATED block with "deprecated". - * sample/GtkDemo/DemoMain.cs: s/File/System.IO.File/ since there's now - also a Gtk.File class. - * sample/GtkDemo/DemoSizeGroup.cs: Use the original OptioMenu code. - * sample/GtkDemo/DemoTextView.cs: s/File/System.IO.File/. - * sample/Makefile.am: - * sources/gtk-sharp-sources.xml: Add a bunch of <exclude>s to the Gtk - namespace so it won't generate API for _really_ old deprecated widgets - like GtkCList, GtkCTree etc. - - This commit adds support for deprecated widgets to gtk#. This is - necessary since some widgets have been deprecated from gtk+ 2.2->2.4, - but are still in use (any program that uses Gtk.OptionMenu, Gtk.Combo - and methods in Gtk.Toolbar to name a few). This is done in C# by using - the [Obsolete] metadata tag. - -2004-05-07 Todd Berman <tberman@sevenl.net> - - * gnome/Makefile.am: add DruidPageEdge.custom - * gnome/Gnome.metadata: hide DruidPageEdge ctors - * gnome/DruidPageEdge.custom: subclassable ctors. - -2004-05-07 Todd Berman <tberman@sevenl.net> - - * gnome/IconList.custom: subclassable ctor. - * gnome/Gnome.metadata: hide IconList ctor. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gnome/Canvas.custom : PixelsPerUnit prop. - * gnome/Gnome.metadata : hide Canvas.SetPixelsPerUnit. - * gnome/glue/Makefile.am : get_pixels_per_unit. - * gnome/glue/canvas.c : get_pixels_per_unit. - * gtk/Container.custom : OnForall virtual method impl. - * gtk/glue/Makefile.am : add container.c - * gtk/glue/container.c : virtual method glue for forall. - * gtk/glue/makefile.win32 : add container.o - -2004-05-07 Todd Berman <tberman@sevenl.net> - - * gnome/Gnome.metadata: map properties for with_flags DateEdit ctor, - and hide the DateTime, bool, bool ctor - * gnome/Makefile.am: Add DateEdit.custom. - * gnome/DateEdit.custom: Add subclassable ctor for DateEdit and - add enough overloads that accept variable parameter lists to make - Mike Kestner sick. - -2004-05-07 Todd Berman <tberman@sevenl.net> - - * gnome/Gnome.metadata: Hide App ctor. - * gnome/Makefile.am: add App.custom. - * gnome/App.custom: New custom for subclassing. - -2004-05-07 Todd Berman <tberman@sevenl.net> - - * gnome/Gnome.metadata: Hide Scores ctor. - * gnome/Makefile.am: add Scores.custom. - * gnome/Scores.custom: New custom for overridable ctor. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : map some RadioButton ctor props. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gnome/Druid.custom : fix Todd's broken code. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide TextView with_buffer ctor. map some parms - to props. - * gtk/Makefile.am : add new custom. - * gtk/TextView.custom : implement with_buffer ctor for subclassing. - -2004-05-07 Todd Berman <tberman@sevenl.net> - - * gnome/Gnome.metadata: Hide Druid with_window ctor, map About property. - add some null_ok from bug #57948. - * gnome/Druid.custom: implement with_window ctor for subclassing, and - a 3 paramatered version for when you dont care about the returned - window. another 3 parametered version for when you have want null - parent, and a 2 parametered version for the null parent and the - discarding of the window (THANKS MIKE!) - * gnome/Makefile.am: add new custom. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/TreeView.custom : make the NodeStore ctor subclassable. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide SpinButton with_range ctor. - * gtk/Makefile.am : add new custom. - * gtk/SpinButton.custom : implement with_range ctor for subclassing. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide ListStore and TreeStore newv ctors. - * gtk/ListStore.custom : rework the ctors for subclassing. - * gtk/TreeStore.custom : rework the ctors for subclassing. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide HScale and VScale with_range ctors. - * gtk/Makefile.am : add new customs. - * gtk/HScale.custom : implement with_range ctor for subclassing. - * gtk/VScale.custom : implement with_range ctor for subclassing. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : map AccelLabel ctor parm to prop and hide - Adjustment ctor. - * gtk/Adjustment.custom : add set accessors for Upper/Lower and - implement ctor with subclassing. - * gtk/CheckMenuItem.custom : return from subclass branch. - * gtk/ImageMenuItem.custom : return from subclass branch. - * gtk/MenuItem.custom : return from subclass branch. - * gtk/RadioMenuItem.custom : return from subclass branch. - * gtk/glue/adjustment.c : add setters for lower/upper. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide some *MenuItem ctors. - * gtk/CheckMenuItem.custom : implement string ctor. - * gtk/ImageMenuItem.custom : implement string ctor. - * gtk/MenuItem.custom : use AccelLabel. - * gtk/RadioMenuItem.custom : fix string ctor for subclassing. - * gtk/Makefile.am : add new customs. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide some MenuItem ctors. - * gtk/Makefile.am : add the new custom. - * gtk/MenuItem.custom : implement the string ctor. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * sample/GnomeHelloWorld.cs : guard against null args.Event in the - icon_selected_cb, which occurs on button-presses for some reason. - Thanks to wmealing on irc for the bug report. - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - * sample/*/Makefile.am : rebuild if the assemblies change - -2004-05-07 Mike Kestner <mkestner@ximian.com> - - [Derived from a patch by Ben Maurer] - * generator/Ctor.cs : generate code to detect subclassing and handle - GType registration and native object creation properly. - * generator/Parameters.cs : add PropertyName accessor for param attr. - * generator/Property.cs : use a new GLib.Value ctor. - * glib/ObjectManager.cs : redo hash access. - * glib/Object.cs : CreateNativeObject method to invoke g_object_newv - and some refactoring of RegisterGType and LookupGType. - * glib/Value.cs : make gtype field an IntPtr. - * glib/glue/object.c : glue for g_object_newv use. - * glib/glue/value.c : new glue for value creation. - * gtk/Dialog.custom : fix a ctor declaration for auto-reg. - * gtk/Gtk.metadata : mark a couple property_name attrs as examples. - * sample/Subclass.cs : use auto-GType-registration now. - -2004-05-06 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : some out and array magic for Property.Get. - [Fixes #56513] - -2004-05-06 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * generator/Method.cs: Don't use the "unsafe" modifier for methods which - are part of an interface [fixes #58059]. - -2004-05-06 Mike Kestner <mkestner@ximian.com> - - * configure.in : bump version for cvs. - -2004-05-06 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * Makefile.in: - * configure.in: - * gconf/GConf.PropertyEditors/Makefile.in: - * glade/Makefile.in: - * gnomevfs/.cvsignore: - * gnomevfs/AssemblyInfo.cs.in: - * gnomevfs/Makefile.am: - * gnomevfs/Makefile.in: - * gnomevfs/gnome-vfs-sharp.dll.config.in: - * gnomevfs/gnome-vfs-sharp.pc.in: - * sample/Actions.cs: Remove System.Drawing.Size usage. - * sample/Makefile.am: Added actions.exe. - * sample/Makefile.in: - - Remove obsolete Makefile.in files from the repository. Auto*ify the - gnomevfs assembly. - -2004-05-06 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - Merge changes from HEAD to the jeroen-gtk-2-4 branch. The correct - gnome 2.6.0 & gtk+-2.4.1 sources are now also downloaded when you run - "make get-source-code". Some samples are disabled for now since they - use deprecated API and fail to build. - -2004-05-05 Mike Kestner <mkestner@ximian.com> - - * generator/BoxedGen.cs : remove g_value_init DllImport and change - (g|s)et_boxed to use a glue method to simplify dllmapping. - * glib/Value.cs : add Init method. - * glib/glue/value.cs : add get/set_boxed glue methods. - * */*.config.in : remove libgobject mappings for dlls that no longer - need them. - -2004-05-05 Larry Ewing <lewing@ximian.com> - - * gtk/Adjustment.custom: add an a set method for StepIncrement. - * gtk/glue/adjustment.c: add gtk_adjustment_set_step_increment. - -2004-05-05 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs : rmv Handle param to SignalCallback ctor calls. - s/GtkSharp.Signal*/GLib.Signal*. - * generator/SignalHandler.cs : rmv Handle param to ctors as it's - redundant. s/GtkSharp.Signal*/GLib.Signal*. Use new Connect/Disconnect - instead of generating DllImports into libgobject directly. - * glib/SignalArgs.cs : move the the GLib namespace. - * glib/SignalCallback.cs : expose Connect and Disconnect methods to - hide some pinvokes that were previously generated. Also move to the - GLib namespace. - gnome/*Handler.cs : update to new SignalHandler API. - gnome/CanvasProxy.cs : ditto - gnome/void*Signal.cs : ditto - -2004-05-05 Mike Kestner <mkestner@ximian.com> - - * sample/gconf/Makefile.am : fix some whitespace. I love you, auto*. - -2004-05-05 Mike Kestner <mkestner@ximian.com> - - * configure.in : fix gtkhtml versioning *again*. - * sample/gconf/Makefile.am : conditional build on ENABLE_GNOME. - -2004-05-04 Mike Kestner <mkestner@ximian.com> - - * configure.in : require gtkhtml-3.0.10 so we can use a single - so version (.4). - * sources/* : update to gtkhtml-3.0.10. This produces zero change - in the generated API. - -2004-05-03 Todd Berman <tberman@sevenl.net> - - * */*.pc.in: change to use @PACKAGE@ where its needed, fixes pc bug - -2004-05-03 Todd Berman <tberman@sevenl.net> - - * configure.in: bump mono dep to 0.90 - -2004-05-03 Todd Berman <tberman@sevenl.net> - - * configure.in: bump to 0.91, dont kill me mike. - -2004-05-03 Todd Berman <tberman@sevenl.net> - - * gtk-sharp.pc.in: add PACKAGE stuff here - -2004-05-03 Mike Kestner <mkestner@ximian.com> - - * */Makefile.am : fix gacutil for new package switch - * */*.pc.in : fix -libs var for new dll path - -2004-05-03 Mike Kestner <mkestner@ximian.com> - - * configure.in : add some checks for gtkhtml-3.1 and use it if avail. - * gtkhtml/gtkhtml-sharp.dll.config.in : deal with 3.1 versioning. - -2004-05-03 Miguel de Icaza <miguel@ximian.com> - - * gtkhtml/Gtk.metadata: Patch from Mike Kestner: make - GtkHTMLStream opaque, to fix a bug that was found by running - Monodoc on MacOS X. We were passing a pointer to a managed - object, instead of a pointer to a HTMLStream-allocated object. - - * HTMLStream.custom: Update custom file to reflect change to - Opaque: use Handle instead of this. - -2004-04-30 Mike Kestner <mkestner@ximian.com> - - * gdk/glue/makefile.win32 : remove windowmanager.o for now. It - was breaking the build on win32. - -2004-04-30 Mike Kestner <mkestner@ximian.com> - - * configure.in : lookup gacutil and error out if not found. - * */Makefile.am : add install-data-local and uninstall-local targets - for GAC installation. Add gtk-sharp.pub target to cp the key in for - distcheck. - * */AssemblyInfo.cs.in : remove ../ from key path for VPATH build. - -2004-04-30 Mike Kestner <mkestner@ximian.com> - - * configure.in : remove BASE_DEPENDENCIES LIBS and CFLAGS and - expose more specific versions for glue building. - * */glue/Makefile.am : use more specific versions of LIBS and CFLAGS - to reduce the ldd footprint. - -2004-04-30 Mike Kestner <mkestner@ximian.com> - - * configure.in : AC_SUBST an API_VERSION=1.0.0.0 for the - AssemblyVersionAttributes. - * */AssemblyInfo.cs.in : s/@VERSION@/@API_VERSION@/ - -2004-04-30 Mike Kestner <mkestner@ximian.com> - - * */AssemblyInfo.cs.in : s/@VERSION@.0.0/@VERSION@/ - -2004-04-30 Mike Kestner <mkestner@ximian.com> - - * sample/gconf/* : break System.Drawing dependency. - -2004-04-30 Owen Fraser-Green <owen@discobabe.net> - - * gconf/tools/gconfsharp-schemagen.in : fixed variables - * sources/Makefile.am : remove reference to old gst target - -2004-04-30 Erik Dasque <edasque@ximian.com> - - * gtk/Calendar.custom : new Date property with setter - -2004-04-29 Mike Kestner <mkestner@ximian.com> - - * mapdllnames.pl : remove unneccessary script - -2004-04-29 Mike Kestner <mkestner@ximian.com> - - * gst/* : kill. it's been spun out the the gst-sharp module. - * sources/Makefile.am : remove gst source download target. - * sources/gtk-sharp-sources.xml : remove gst nodes. - -2004-04-29 Mike Kestner <mkestner@ximian.com> - - * configure.in : expand the AssemblyInfo.cs files. - * */AssemblyInfo.cs.in : new assembly info files. - * */Makefile.am : dist, make, and clean assmbly info files. - -2004-04-29 Owen Fraser-Green <owen@discobabe.net> - - * generator/ClassBase.cs: added base case to Parent to avoid - infinite recursion. - * glib/Marshaller.cs: changed SizeOf(typeof's to int and long - instead of string. - -2004-04-29 Duncan Mak <duncan@ximian.com> - - * vte/vte-sharp.dll.config.in: Removed extra </configuration> - element. - -2004-04-29 Owen Fraser-Green <owen@discobabe.net> - - * gnome/CanvasGroup.custom : added public constructor. - -2004-04-29 Mike Kestner <mkestner@ximian.com> - - * configure.in : expand the new config files. - * */*config.in : the per-assembly config files. - * */Makefile.am : dist, clean, and install the configs. - * gnome/*.c* : fix some errant DllImports. - -2004-04-28 Mike Kestner <mkestner@ximian.com> - - [Expanded from patch by John Luke attached to bug.] - * gdk/Gdk.metadata : rename Atom.Name to GetName so it props. - * gdk/Atom.custom : new string cast operator. - * sample/TestDnd.cs : fix Atom.Name reference - * sample/GtkDemo/DemoEditableCell.cs : fix a ListStore.Remove - ref broken by last commit. - [Fixes #57721] - -2004-04-28 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : mark ListStore.Remove iter pass_as=ref. - [Fixes #56945] - -2004-04-28 Mike Kestner <mkestner@ximian.com> - - * Makefile.am : dist the public signing key baulig just added. - -2004-04-27 Mike Kestner <mkestner@ximian.com> - - * gnome/glue/canvaspoints.c : remove some g_prints spotted by - Jorge Garcia. - -2004-04-16 Rachel Hestilow <rachel@nullenvoid.com> - - * generator/GObjectGen.cs: Added new generatable to handle - plain GObjects the same way we do subclasses. - * generator/ManualGen.cs: Make FromNative/FromNativeReturn virtual - to allow overriding. - * generator/SymbolTable.cs: Use GObjectGen instead of - ManualGen for GObject. - * generator/Makefile.am: Add GObjectGen.cs. - -2004-04-16 Boyd Timothy <btimothy@novell.com> - - * gdk/Global.custom : properties to expose window manager spec - properties. - * gdk/glue/windowmanager.c : glue to retrieve window manager props - using gdk_property_get. - * gdk/glue/Makefile.am : add new file. - * gdk/glue/makefile.win32 : add new file. - -2004-04-13 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : fix a csc-breaker. - -2004-04-12 Mike Kestner <mkestner@ximian.com> - - * gnome/Program.custom : add ArgumentException for app_id containing - spaces. [fixes #56594] - -2004-04-12 Mike Kestner <mkestner@ximian.com> - - [Rework of a patch from Ben Maurer to turn GLib.Value - into a valuetype.] - * generator/BoxedGen.cs : fix operators for new valuetype GValues. - * generator/ByRefGen.cs : new generatable for byref value types. - * generator/Makefile.am : add ByRefGen.cs. - * generator/MethodBody.cs : remove GValue special casing. - * generator/Property.cs : rework value handling. - * generator/Signal.cs : fix base virtual method value passing. - * generator/SymbolTable.cs : map GValue to ByRefGen. - * glib/Object.cs : rework GetProperty and SetProperty. - * glib/Value.cs : make it a value type. - * glib/ValueArray.cs : fix GValue passing. - * glib/glue/value.c : rework for valuetype GValues. - * gnome/Program.custom : fix GValue passing - * gtk/Gtk.metadata : make TreeModel.GetValue value param pass_as=ref. - * gtk/ListStore.custom : fix GValue passing - * gtk/NodeStore.cs : fix GValue passing - * gtk/TextTag.custom : fix GValue passing - * gtk/TreeModelSort.custom : fix GValue passing - * gtk/TreeStore.custom : fix GValue passing - -2004-04-05 Larry Ewing <lewing@ximian.com> - - * gnome/Gnome.metadata: Make data an array type so that the image - functions can be used. - * gnome/Print.custom: add a custom handler to print Pixbufs. - * gnome/Makefile.am: add Print.custom. - -2004-04-07 Mike Kestner <mkestner@ximian.com> - - * generator/ClassBase.cs : remove default ctor generation and - hasDefaultConstructor field. - * generator/Ctor.cs : chain to base (IntPtr.Zero). - * generator/StructBase.cs : remove hasDefaultConstructor usage. - * glib/Object.cs : remove Object () ctor. Add Ben's GetGType - method, although nothing uses it yet. Still working on integrating - the remainder of Ben's patch. - * gtk/Gtk.metadata : remove all the disabledefaultctor rules. - * */*.custom : add base (IntPtr.Zero) or this (...) chaining for - all ctors. - -2004-04-07 John Luke <jluke@cfl.rr.com> - - * gtk/Gtk.metadata: mark Gtk.Widget.ModifyFont font_desc null_ok - -2004-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/Value.cs: added StructLayout attribute as requested by the - runtime. Now --aot works again. - -2004-04-04 Mike Kestner <mkestner@ximian.com> - - * generator/SymbolTable.cs : don't use StringGen for gunichar. - * glib/glue/unichar.c : glue to fetch a gunichar as a utf8 string. - * glib/glue/Makefile.am : add unichar.c - * glib/glue/makefile.win32 : add unichar.c - * gtk/Gtk.metadata : hide TextIter.GetChar - * gtk/TextIter.custom : manually impl Char prop. [fixes #53425] - -2004-04-04 Mike Kestner <mkestner@ximian.com> - - * pango/Layout.custom : increment an indexer. thanks to Moritz Balz - for the bug report and candidate patch. - -2004-04-04 Mike Kestner <mkestner@ximian.com> - - * generator/BoxedGen.cs : DllImport glibsharpglue for value_create. - -2004-04-04 Mike Kestner <mkestner@ximian.com> - - * gnome/glue/canvasitem.c : add glue to override VMs. - * gnome/CanvasItem.cs : expose virtual methods for update, point, - realize, draw, and render. - -2004-04-04 John Luke <jluke@cfl.rr.com> - - * vte/Vte.metadata: mark argv and envv parameters to - Vte.Terminal.ForkCommand as arrays, it finally works - * sample/Vte-test.cs: adjust for above - -2004-04-02 Todd Berman <tberman@sevenl.net> - - * gtk/Gtk.metadata: fix Gtk.SelectionData.Set. - -2004-04-02 Todd Berman <tberman@sevenl.net> - - * configure.in: added new .pc files - * gtk-sharp.pc.in: modified to include Libs: line - * art/.cvsignore: added art-sharp.pc - * art/Makefile.am: added rules for installing .pc - * art/art-sharp.pc.in: new .pc file - * gconf/GConf/.cvsignore: added gconf-sharp.pc - * gconf/GConf/Makefile.am: added rules for installing .pc - * gconf/GConf/gconf-sharp.pc.in: new .pc file - * gda/.cvsignore: added gda-sharp.pc - * gda/Makefile.am: added rules for installing .pc - * gda/gda-sharp.pc.in: new .pc file - * glade/.cvsignore: added glade-sharp.pc - * glade/Makefile.am: added rules for installing .pc - * glade/glade-sharp.pc.in: new .pc file - * gnome/.cvsignore: added gnome-sharp.pc - * gnome/Makefile.am: added rules for installing .pc - * gnome/gnome-sharp.pc.in: new .pc file - * gnomedb/.cvsignore: added gnomedb-sharp.pc - * gnomedb/Makefile.am: added rules for installing .pc - * gnomedb/gnomedb-sharp.pc.in: new .pc file - * gtkhtml/.cvsignore: added gtkhtml-sharp.pc - * gtkhtml/Makefile.am: added rules for installing .pc - * gtkhtml/gtkhtml-sharp.pc.in: new .pc file - * rsvg/.cvsignore: added rsvg-sharp.pc - * rsvg/Makefile.am: added rules for installing .pc - * rsvg/rsvg-sharp.pc.in: new .pc file - * vte/.cvsignore: added vte-sharp.pc - * vte/Makefile.am: added rules for installing .pc - * vte/vte-sharp.pc.in: new .pc file - -2004-04-01 Mike Kestner <mkestner@ximian.com> - - * art/Art.metadata : mark dst pass_as=out on Affine.Point - -2004-04-01 Jorn Baayen <jorn@nl.linux.org> - - * gtk/Style.custom : wrappers for Text[] and Base[] - * gtk/glue/style.c : glue to access text[] and base[] - [fixes #54805] - -2004-04-01 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnome/IconTheme.custom : GetSearchPath impl [fixes #51599]. - -2004-04-01 Joshua Tauberer <tauberer@for.net> - - * gdk/Gdk.metadata : hide Region.GetRectangles - * gdk/Region.custom : implement Rectangles prop [fixes #55811] - -2004-04-01 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : NULL check for g_value_get_string Thanks to Jeroen - Zwartepoorte for the bug report with patch [fixes #54979]. - -2004-03-31 Miguel de Icaza <miguel@ximian.com> - - * configure.in: If monodoc is not found, then turn off - enable_monodoc, so the value is properly propagated. - -2004-03-31 Mike Kestner <mkestner@ximian.com> - - * configure.in : tagged for 0.18 and bumped release to 0.18.99 - for cvs. - -2004-03-31 Mike Kestner <mkestner@ximian.com> - - * configure.in : remove atk/glue/Makefile - * atk/Makefile.am : comment out subdirs for now - * atk/makefile.win32 : don't build glue - * */glue/Makefile.am : remove generated.c from sources - * */glue/makefile.win32 : remove generated.c from sources - * generator/ObjectGen.cs : disable vm glue generation for now. - -2004-03-30 John Luke <jluke@cfl.rr.com> - - [Reworked a bit by MK] - * Makefile.am : add doc dir - * configure.in : test for monodoc, expand doc/Makefile - * doc/Makefile.am : build and dist docs - * doc/makefile : kill - -2004-03-30 Mike Kestner <mkestner@ximian.com> - - * gtk/Makefile.am : add the customs that miggie didn't add. - -2004-03-30 Mike Kestner <mkestner@ximian.com> - - * rsvg/Makefile.am : apply metadata to api - * rsvg/Rsvg.metadata : mark an array param - -2004-03-29 Todd Berman <tberman@sevenl.net> - - * sample/Makefile.am: small resource build fix for glade-test.exe - -2004-03-27 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnomevfs/Mime.cs: - * gnomevfs/MimeActionType.cs: - * gnomevfs/Vfs.cs: - - Implemented more gnome-vfs methods. - -2004-03-25 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : Widget.Events is a Gdk.EventMask, not int - * sample/GtkDemo/DemoDrawingArea.cs : remove int casts - * sample/Scribble.cs : remove int casts - -2003-03-24 John Luke <jluke@cfl.rr.com> - - * samples/gconf/Makefile.am: - changes SOURCES to FILES to make automake 1.8 happy - -2003-03-24 Jorn Baayen <jorn@nl.linux.org> - - * gtk/Gtk.metadata : mark null_ok param on Window.SetTransientFor. - -2003-03-24 Jorn Baayen <jorn@nl.linux.org> - - * gdk/Gdk.metadata : mark out param on Screen.GetMonitorGeometry. - -2004-03-22 Mike Kestner <mkestner@ximian.com> - - * gtk/Window.custom : bring back the DefaultSize prop as a - Gdk.Size. - -2004-03-21 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * configure.in: if no C# compiler found, error out. - -2004-03-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Makefile.am : generate glue - * gdk/glue/Makefile.am : build generated glue - * gdk/glue/makefile.win32 : build generated glue - * gdk/glue/vmglueheaders.h : includes for vm glue - * gtk/Makefile.am : generate glue - * gtk/glue/Makefile.am : build generated glue - * gtk/glue/makefile.win32 : build generated glue - * gtk/glue/vmglueheaders.h : includes for vm glue - -2004-03-18 Mike Kestner <mkestner@ximian.com> - - * configure.in : expand atk/glue/Makefile - * atk/Makefile.am : generate glue and build glue dir - * atk/makefile.win32 : ditto - * atk/glue/Makefile.am : build new glue - * atk/glue/makefile.win32 : build new glue - * atk/glue/vmglueheaders.h : new includes for vm glue - * atk/glue/win32dll.c : win dll building code - * generator/CodeGenerator.cs : add --gluelib-name and - --glue-filename argument parsing. - * generator/GenerationInfo.cs : add GluelibName, GlueFilename, - GlueEnabled, GlueWriter, and CloseGlueWriter. - * generator/ObjectGen.cs : Add VirtualMethod glue generation - * generator/Statistics.cs : Add warning message for virtual - method throttling. - -2004-03-18 Mike Kestner <mkestner@ximian.com> - - * parser/gapi2xml.pl : fix passbyvalue bug in vm parsing. - * */*.raw : regen - -2004-03-17 Mike Kestner <mkestner@ximian.com> - - * sample/rsvg/Makefile.am : make conditional on ENABLE_RSVG - -2004-03-16 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs : streamline the remove code a tad. - -2004-03-16 Mike Kestner <mkestner@ximian.com> - - * gdk/Makefile.am : add new file. - * gdk/Size.cs : implementation of a Size value type. - -2004-03-16 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs : remove a C.WL. - -2004-03-16 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : don't gen a Signals hash per class. - * generator/Signal.cs : gen checks for [ConnectBefore]. - * generator/SignalHandler.cs : add connect_flags param to ctor. - * glib/ConnectBeforeAttribute.cs : new attr - * glib/Makefile.am : add new file - * glib/Object.cs : add before/after hashes and EventLists - * gnome/CanvasProxy.cs : use AfterSignals and AfterHandlers. - -2004-03-14 John Luke <jluke@cfl.rr.com> - - * parser/gapi-fixup.in: - * generator/gapi-codegen.in: s/@MONO@/@RUNTIME@ - -2004-03-14 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * Makefile.in: - * configure.in: - * gnomevfs/AsyncCallback.cs: - * gnomevfs/AsyncCallbackNative.cs: - * gnomevfs/AsyncReadCallback.cs: - * gnomevfs/AsyncReadCallbackNative.cs: - * gnomevfs/AsyncWriteCallback.cs: - * gnomevfs/AsyncWriteCallbackNative.cs: - * gnomevfs/Handle.cs: - * gnomevfs/Makefile.in: - * gnomevfs/OpenMode.cs: - * gnomevfs/Result.cs: - * gnomevfs/SeekPosition.cs: - * gnomevfs/Vfs.cs: - * sample/Makefile.in: - * sample/TestVfs.cs: - - Added partial gnome-vfs bindings. Necessary now that can Gtk.FileChooser - return gnome-vfs uris. - -2004-03-12 Mike Kestner <mkestner@ximian.com> - - * */Makefile.am : automakify the build - * */Makefile.in : kill - * *.custom : remove System.Drawing dependencies - * *.cs : remove System.Drawing dependencies - * *-api.xml : mv to *-api.raw - * glue/* : mv to lib specific gluelibs for glib, gdk, gtk, and glade. - * gtk/gtk-symbols : alias GtkType to GType - * sources/gtk-sharp-sources.xml : create .raw files. They are now - transformed to .xml files by the metadata compilation step. - -2004-03-08 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : ignore virtual_method elems for now. - * parser/gapi2xml.pl : parse the non-signal class methods and add as - virtual_method elements in the API xml - * */*-api.xml : regen - -2004-03-06 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glue/Makefile.am: - * glue/makefile.win32: - * glue/thread-notify.c: dropped. - * gtk/ThreadNotify.cs: use just Idle.Add, which is what the deprecated - gda_input_add does. No more P/Invoke here. - -2004-03-04 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glue/Makefile.am: - * glue/makefile.win32: added thread-notify.o - * glue/thread-notify.c: handles pipe creation/read/write/close for - ThreadNotify. - * gtk/ThreadNotify.cs: P/Invoke the thread-notify code instead of libc - functions. - -2004-02-29 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/FileChooserDialog.custom: Implement the - gtk_file_chooser_dialog_new constructor by hand. - -2004-02-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Gtk.metadata: Rename some AddAction* methods to just Add*. - -2004-02-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * glib/Value.cs: Work around a GLib.Value having a null string (#54979). - * sample/Actions.cs: Updated. - * sample/Makefile.in: Added the action sample. - -2004-02-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gdk/gdk-api.xml: Updated to latest CVS. - * gnome/gnome-api.xml: Idem. - * gtk/gtk-api.xml: Idem. - * pango/pango-api.xml: Idem. - * sample/Makefile.in: Don't build the gconf sample for now. - -2004-02-28 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gnome/PrintContext.custom: Added gnome_print_context_* methods. - * gtk/gtk-api.xml: Hide GtkActionEntry C-specific struct and methods. - * sample/Actions.cs: Updated. - * sample/Makefile.in: Reinclude print sample. - * sample/PrintSample.cs: Updated. - * sample/TestDnd.cs: Updated. - -2004-02-26 Mike Kestner <mkestner@ximian.com> - - * configure.in : tagged 0.17 and bumped cvs version. - -2004-02-26 Mike Kestner <mkestner@ximian.com> - - * atk/Atk.metadata : hide some funky api - * atk/atk-api.xml : regen - -2004-02-26 Mike Kestner <mkestner@ximian.com> - - * gnome/GtkSharp.* : move to Gnome namespace - * gnome/CanvasProxy.cs : update event handler namespaces - * gnome/voidObject*.cs : internalize - -2004-02-24 Mike Kestner <mkestner@ximian.com> - - * pango/AttrIterator.custom : manually implement SList method. - * pango/GlyphItem.custom : manually implement SList method. - * pango/Layout.custom : manually implement SList method. - * pango/Pango.metadata : hide some SList methods. - * pango/pango-api.xml : regen. - -2004-02-23 Mike Kestner <mkestner@ximian.com> - - * pango/Pango.metadata : mark some out params on Layout. - * pango/pango-api.xml : regen - [fixes #54720] - -2004-02-23 Thiago Milczarek Sayão <sayao@brturbo.com> - - * gtk/TextBuffer.custom : add TextIter parm to InsertWithTags method. - -2004-02-21 Mike Kestner <mkestner@ximian.com> - - * pango/Pango.metadata : mark some out params on Layout. - * pango/pango-api.xml : regen - [fixes #54696] - -2004-02-21 Mike Kestner <mkestner@ximian.com> - - * pango/Pango.metadata : mark some out params on ParseMarkup. - * pango/pango-api.xml : regen - [fixes #54695] - -2004-02-20 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide NoExpose, Client, Setting, WindowState, - and Proximity events. - * gdk/EventClient.cs : glue-based manual implementation. - * gdk/EventClient.custom : kill - * gdk/EventNoExpose.custom : kill - * gdk/EventProximity.cs : glue-based manual implementation. - * gdk/EventProximity.custom : kill - * gdk/EventSetting.cs : glue-based manual implementation. - * gdk/EventSetting.custom : kill - * gdk/EventWindowState.cs : glue-based manual implementation. - * gdk/EventWindowState.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mappings. - * glue/event.cs : expose event struct fields. - * gtk/Application.cs : simplify CurrentEvent prop. - -2004-02-20 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide Property, Selection, and DND events - * gdk/EventDND.cs : glue-based manual implementation. - * gdk/EventDND.custom : kill - * gdk/EventProperty.cs : glue-based manual implementation. - * gdk/EventProperty.custom : kill - * gdk/EventSelection.cs : glue-based manual implementation. - * gdk/EventSelection.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mappings. - * glue/event.cs : expose DND, Property and Selection struct fields. - -2004-02-19 Thiago Milczarek Sayão <sayao@brturbo.com> - - * gtk/TextBuffer.custom : new InsertWithTags method. - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventFocus and EventConfigure. - * gdk/EventConfigure.cs : glue-based manual implementation. - * gdk/EventConfigure.custom : kill - * gdk/EventFocus.cs : glue-based manual implementation. - * gdk/EventFocus.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mappings. - * glue/event.cs : expose Focus and Configure struct fields. - * sample/Scribble.cs : fix EventConfigure api breakage - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventCrossing. - * gdk/EventCrossing.cs : glue-based manual implementation. - * gdk/EventCrossing.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventCrossing. - * glue/event.cs : expose Crossing struct fields. - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventVisibility. - * gdk/EventVisibility.cs : glue-based manual implementation. - * gdk/EventVisibility.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventVisibility. - * glue/event.cs : expose Visibility struct fields. - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventExpose. make Region opaque. - * gdk/EventExpose.cs : glue-based manual implementation. - * gdk/EventExpose.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventExpose. - * glue/event.cs : expose Expose struct fields. - * sample/Scribble.cs : fix some EventExpose api breakage - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventMotion - * gdk/EventMotion.cs : glue-based manual implementation. - * gdk/EventMotion.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventMotion. - * glue/event.cs : expose Motion struct fields. - * sample/Scribble.cs : fix some EventMotion api breakage - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventScroll - * gdk/EventScroll.cs : glue-based manual implementation. - * gdk/EventScroll.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventScroll. - * glue/event.cs : expose Scroll struct fields. - -2004-02-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventButton - * gdk/EventButton.cs : glue-based manual implementation. - * gdk/EventButton.custom : kill - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventButton. - * glue/event.cs : expose Button struct fields. - * sample/CanvasExample.cs : fix EventButton ctor - * sample/GnomeHelloWorld.cs : fix EventButton ctor - -2004-02-17 Radek Doulik <rodo@ximian.com> - - * glib/Value.cs: use g_value_set_pointer for - GType.Pointer/IWrapper objects - - * glib/TypeConverter.cs: return GType.Pointer for Opaque objects - which do not have GType property - -2004-02-17 John Luke <jluke@cfl.rr.com> - - * gdk/Gdk.metadata: set Gdk.Window.Cursor null_ok - * gdk/gdk-api.xml: regen - -2004-02-17 Jorn Baayen <jorn@nl.linux.org> - - * gtk/SelectionData.custom : fix get_data_pointer glue method name. - -2004-02-16 Mike Kestner <mkestner@ximian.com> - - * glib/TypeConverter.cs : check for GType prop on all types, - not just value types, before we fall back to managed values. - * glib/Value.cs : use handle to set_boxed for IWrappers. - -2004-02-16 Mike Kestner <mkestner@ximian.com> - - * gdk/EventKey.cs : add a Key prop to return casted KeyVals. - -2004-02-16 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventKey - * gdk/EventKey.cs : glue-based manual implementation. - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : manual mapping for EventKey. - * glue/event.cs : expose key struct fields. - -2004-02-16 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide EventAny - * gdk/Event.cs : make this a full EventAny implementation. - * gdk/gdk-api.xml : regen - * gdk/gdk-symbols.xml : map EventAny to Gdk.Event. - * glue/event.cs : expose window and send_event fields. - -2004-02-14 Todd Berman <tberman@sevenl.net> - - * gtk/Gtk.metadata : hide Widget.SetState - * gtk/Widget.custom : add State get; set; property - * glue/widget.c : add glue for get_State (); - * gtk/gtk-api.xml : regen - -2004-02-12 Mike Kestner <mkestner@ximian.com> - - * sample/GladeViewer.cs : fix a broken api usage. - -2004-02-12 Mike Kestner <mkestner@ximian.com> - - * gnome/Gnome.metadata : hide the GList API - * gnome/*.custom : manually wrap GList api using typed arrays - * gnome/gnome-api.xml : regen. - -2004-02-12 Mike Kestner <mkestner@ximian.com> - - * glade/Glade.metadata : hide a GList method. - * glade/Makefile.in : run gapi-fixup - * glade/XML.custom : return Widget[] from GetWidgetPrefix. - * glade/glade-api.xml : regen - * pango/Pango.metadata : hide a dubious GList method. - * pango/pango-api.xml : regen - -2004-02-12 Ben Maurer <bmaurer@users.sourceforge.net> - - * gtk/TreeIter.custom: Make the hash here not collide. - -2004-02-12 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : hide the GList API - * gdk/*.custom : manually wrap GList api using typed arrays - * gdk/gdk-api.xml : regen. - -2004-02-12 Mike Kestner <mkestner@ximian.com> - - * gtk/Accel.custom : s/List/SList - * gtk/Stock.custom : ditto - * gtk/TextIter.custom : ditto - -2004-02-12 Zoltan Varga <vargaz@freemail.hu> - - * glib/time_t_CustomMarshaler.cs: Update after custom marshaling - changes. - -2004-02-12 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * gtk/Gtk.metadata: Hide the various *ActionEntry classes since - they're only meant to be used in C code. - -2004-02-11 Jeroen Zwartepoorte <jeroen@xs4all.nl> - - * atk/atk-api.xml: - * gconf/GConf.PropertyEditors/Makefile.in: - * gdk/Gdk.metadata: - * gdk/gdk-api.xml: - * generator/CallbackGen.cs: Set a GError pointer to IntPtr.Zero. - * gnome/Gnome.metadata: - * gnome/gnome-api.xml: - * gtk/Adjustment.custom: - * gtk/FileSelection.custom: Deprecated, removed. - * gtk/FileSystemModel.custom: - * gtk/Gtk.metadata: - * gtk/IconTheme.custom: Custom SearchPath property (fixes #51599). - * gtk/Paned.custom: Deprecated, removed. - * gtk/TreeModelFilter.custom: New class in 2.4. - * gtk/gtk-api.xml: - * pango/pango-api.xml: - * sample/Actions.cs: Added new Action API sample. - * sample/Makefile.in: Don't build some samples for now. - - Updated everything to use gtk 2.3/2.4. Some samples commented out - because they use deprecated/changed API. More work to follow. - -2004-02-11 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide the GSList API - * gtk/*.custom : manually wrap GSList api using typed arrays - * gtk/gtk-api.xml : regen. - -2004-02-11 Mike Kestner <mkestner@ximian.com> - - * gtk/*.custom : don't use element_type ctor for GObject lists. - -2004-02-11 Mike Kestner <mkestner@ximian.com> - - * gtk/*.custom : return 0 length arrays, not null. - -2004-02-10 Mike Kestner <mkestner@ximian.com> - - * gconf/GConf.PropertyEditors/PropertyEditorColorPicker.cs : - nuke a GnomeSharp. - * generator/Signal.cs : move eventhandlers and args into the - base namespace instead of a *Sharp namespace. - * sample/*.cs : nuke using *Sharp. - -2004-02-10 Mike Kestner <mkestner@ximian.com> - - * art/Art.metadata : mark a field private - * art/art-api.xml : regen - * gda/Gda.metadata : mark a few structs opaque - * gda/gda-api.xml : regen - * gdk/*.custom : fix changed field names - * gdk/gdk-api.xml : regen - * generator/Field.cs : StudlyCase simple typed field names. - * gnome/Gnome.metadata : mark FontEntry.weight private to - avoid collision with Weight field. s|//|/api/namespace|g - * gnome/gnome-api.xml : regen - * gtk/Gtk.metadata : rename AccelKey.accel_key to key to - avoid collision with type name. - * gtk/*.custom : fix changed field names - * gtk/gtk-api.xml : regen - * pango/pango-api.xml : regen - * parser/gapi_pp.pl : add a private_regex to hide BACKEND - and ENGINE apis, which are by convention private. - * sample/* : make compile - * sample/GtkDemo/* : make compile - * sample/test/* : make compile - * sources/gtk-sharp-sources.xml : exclude a bunch of pango - source files. - -2004-02-07 Mike Kestner <mkestner@ximian.com> - - * configure.in : tagged 0.16 and bumped cvs version. - -2004-02-07 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : oops, remove a couple C.WLs. - -2004-02-07 Gustavo Giraldez <gustavo.giraldez@gmx.net> - - * atk/Makefile.in : fix copy/paste error in --assembly-name. - * generator/ObjectGen.cs : rework ObjectManager generation code. - * glade/Makefile.in : fix copy/paste error in --assembly-name. - -2004-02-06 Mike Kestner <mkestner@ximian.com> - - * generator/Method.cs : for Opaque/Object retvals, if raw_ret is - NULL, return null instead of an object with a NULL handle. - -2004-02-06 Mike Kestner <mkestner@ximian.com> - - * glib/time_t_CustomMarshaler.cs : use TimeSpan.TotalSeconds, not - TimeSpan.Seconds. - -2004-02-06 John Luke <jluke@cfl.rr.com> - - * gtk/Gtk.metadata: hide unneeded RadioMenuItem ctors - * gtk/RadioMenuItem.custom: add ctor to create a new group - * gtk/gtk-api.xml: regen - -2004-02-04 Mike Kestner <mkestner@ximian.com> - - * generator/CustomMarshalerGen.cs : impl MarshalReturnType. - * generator/Method.cs : add CustomMarshalerGen return type handling. - * generator/Property.cs : rework property type selection. - * generator/SymbolTable.cs : add time_t mapping - * glib/time_t_CustomMarshaler.cs : impl native to managed methods. - * glue/time_t.c : remove debugging code. - -2004-02-03 Mike Kestner <mkestner@ximian.com> - - * glib/List.cs : add a ctor overload to create empty lists with - a specific element_type. - * glib/SList.cs : ditto - -2004-02-03 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : remove double free of ManagedValues. Fixes the - unfiled (cough, tberman, cough) bug in managed types as tree - store values. - -2004-02-03 Mike Kestner <mkestner@ximian.com> - - * glib/ManagedValue.cs : null check on Free. - * glib/Value.cs : some ManagedValue rework because we unset now. - -2004-02-02 Mike Kestner <mkestner@ximian.com> - - * generator/CustomMarshalerGen.cs : beginnings of a new generatable. - * generator/SymbolTable.cs : mangle interface keyword to iface. - -2004-02-02 Martin Willemoes Hansen <mwh@sysrq.dk> - - * generator/ClassBase.cs: Converted String uses to the string alias. - * generator/ConstStringGen.cs: Ditto - * generator/Ctor.cs: Ditto - * generator/EnumGen.cs: Ditto - * generator/ManualGen.cs: Ditto - * generator/SignalHandler.cs: Ditto - * generator/StringGen.cs: Ditto - * sample/Subclass.cs: Added a DeleteEventHandler to the window widget, - this way a user can properly quit the sample. - -2004-02-02 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : add dispose queue and idle handler so we can - unset GValues that are created by the binding ctors. - [Fixes #53490] - -2004-02-02 Todd berman <tberman@sevenl.net> - - * gdk/Event*.custom: added fix for bug #53729. - -2004-01-30 Todd Berman <tberman@sevenl.net> - - * gtk/Gtk.metadata: out fix for TreeView.GetBackgroundArea and - TextView.GetIterLocation. - * gtk/gtk-api.xml: regen - -2004-01-29 Mike Kestner <mkestner@ximian.com> - - * glib/time_t_CustomMarshaler.cs : new custom marshaler form time_t. - * glue/time_t.c : glue for time_t. - * glue/Makefile.am : add time_t.c - * glue/makefile.win32 : ditto - -2004-01-28 John Luke <jluke@cfl.rr.com> - - * glade/XML.custom : some null checking for crash prevention. - [Fixes #47017] - - * sample/VteTest.cs: update - * vte/Vte.metadata: remove incorrect rules - * vte/vte-api.xml: regen - -2004-01-28 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regen - * parser/gapi2xml.pl : fix signals parsing where a STRUCT_OFFSET - is not present in the signal_new call. - * parser/gapi_pp.pl : ignore #ident lines. - * vte/vte-api.xml : regen - [Fixes #53189] - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * gtk/SelectionData.custom : guard against null in get_Text. - [Fixes #52713] - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * glue/selectiondata.c : expose data field. - * gtk/SelectionData.custom : add Data property. - [Fixes #53397] - -2004-01-27 John Luke <jluke@cfl.rr.com> - - * gtk/AccelKey.custom: add convenience ctor - * gtk/Gtk.metadata: revert previous Widget.AddAccelerator change, - fix AccelKey fields - * gtk/Widget.custom: add overload for AddAccelerator - * gtk/gtk-api.xml: regen - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : only g_free values we allocate. - [Fixes #51180] - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * glib/TypeConverter.cs : lookup GTypes for boxed value types. - * glib/Value.cs : fix boxed type handling in object ctor. - [Fixes #51043] - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * generator/BoxedGen.cs : gen a Value to Boxed explicit cast op. - * generator/Property.cs : use new cast in Boxed getters. - [Fixes #53414] - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.Metadata : revert opaquing of TextIter. - * gtk/TextBuffer.custom : ditto - * gtk/gtk-api.xml : regen - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * generator/MethodBody.cs : remove unnecessary generation for - Handle using out parameters. - * gtk/Gtk.Metadata : make TextIter opaque - * gtk/TextBuffer.custom : remove redundant dllimport - * gtk/gtk-api.xml : regen - -2004-01-27 Mike Kestner <mkestner@ximian.com> - - * gnome/Gnome.metadata : Icon.LookupSync mark factory param - null_ok. Reworked from patch by Todd Berman. - * gnome/gnome-api.xml : regen - -2004-01-25 Mike Kestner <mkestner@ximian.com> - - * art/art-api.xml : regen - * gdk/gdk-api.xml : regen - * generator/SymbolTable.cs : add unsigned char mapping - * gnome/gnome-api.xml : regen - * parser/gapi2xml.pl : handle unsigned keyword in fields, - typedefs, and parameter types. - [Fixes #53055] - -2004-01-25 Mike Kestner <mkestner@ximian.com> - - * gdk/gdk-api.xml : regen - * gnome/gnome-api.xml : regen - * gtk/gtk-api.xml : regen - * parser/gapi2xml.pl : handle typedef struct {...} Foo; - [Fixes #53312] - -2004-01-22 Martin Willemoes Hansen <mwh@sysrq.dk> - - * generator/Ctor.cs: Warnings was output like "ctor" fixed to - output like "in ctor", like the rest of the warnings. - -2004-01-21 John Luke <jluke@cfl.rr.com> - - * vte/Makefile.in: fix so you can build from scratch - -2004-01-21 Mike Kestner <mkestner@ximian.com> - - * generator/Field.cs : kill Protection, restructure Generate - and add FIXMEs for broken parts. Add StudlyName and move array - fields to use Studly names. - -2004-01-20 John Luke <jluke@cfl.rr.com> - - * samples/GtkDemo: - * samples/DbCLient: compile fixes, patch from - Paul Duran <pauld@hutch.com.au> - -2004-01-20 John D. Hardin <jhardin@impsec.org> - - * glue/type.c : ansi-c-ify some late var decls. - -2004-01-19 John Luke <jluke@cfl.rr.com> - - * vte/Makefile.in: fix it so you can build without having - gtk# already installed - -2004-01-19 Mike Kestner <mkestner@ximian.com> - - * art/Art.metadata : correct a couple symbolic array_lens - * art/art-api.xml : regen - * gdk/Gdk.metadata : correct a symbolic array_len - * gdk/gdk-api.xml : regen - * generator/Field.cs : generate array fields with MarshalAs - attrs for correct marshaling. - -2004-01-18 Mike Kestner <mkestner@ximian.com> - - * generator/Field.cs : refactored code from StructBase - * generator/StructBase.cs : spin off Field class - -2004-01-18 Mike Kestner <mkestner@ximian.com> - - * generator/SymbolTable.cs : mangle parms named readonly - -2004-01-18 Peter Williams <peter@newton.cx> - - * glib/Marshaller.cs (ArrayPtrToArgv, ArgvToArrayPtr): new - functions for marshalling and unmarshalling string arrays - to/from char **. Not pretty, but lets us call gtk_init() - in Gtk. - - * gtk/Application.cs (do_init): New helper function to handle - passing args to Gtk. Uses above functions. - (Init): Use do_init, take a new progname parameter. - (InitCheck): Same. - -2004-01-18 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : mark TreeSelection.GetSelectedRows return - list element_type as Gtk.TreePath. - * gtk/gtk-api.xml : regen - -2004-01-18 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : mark TreeSelection.GetSelectedRows model - param as out. - * gtk/gtk-api.xml : regen - -2004-01-18 John Luke <jluke@cfl.rr.com> - - * vte/Vte.metadata: fix to generate signals - * vte/vte-api.xml: regen - * samples/VteTest.cs: remove my home dir path - -2004-01-17 John Luke <jluke@cfl.rr.com> - - * configure.in: detect and compile vte-sharp (require vte-0.11.10) - * Makefile.in: add vte to subdirs - * vte/*: - * sources/makefile: - * sources/gtk-sharp-sources.xml: add vte - * samples/VteTest.cs: add incomplete test/sample - * samples/Makefile.in: add vte-test.exe target - -2004-01-15 Martin Willemoes Hansen <mwh@sysrq.dk> - - * generator/Method.cs: Methods which returns void and has a single out parameter - like void Foobar (..., out int baz, ...) are turned into the more .NET like - signature int Foobar (...), this fixes bug 46392 - * generator/Signature.cs: Ditto - * generator/MethodBody.cs: Ditto - * gtk/ListStore.custom: Ditto - * gtk/TextBuffer.custom: Ditto - * gtk/TreeStore.custom: Ditto - -2004-01-13 Tambet Ingo <tambet@ximian.com> - - * gtk-sharp.pc.in : add libdir var - * generator/SymbolTable.cs : add GByteArray mapping. - -2004-01-13 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs : use ValueArray to assemble parms arg for - g_signal_chain_from_overriden call. Initialize retval GValue for - above. - * glib/Object.cs : g_signal_chain_from_overridden parms are IntPtrs. - * glib/TypeConverter.cs : handle unboxed ValueTypes. - * glib/Value.cs : handle unboxed struct types. add ctor for init'd - unset Values. - * glib/ValueArray.cs : new binding for GValueArray used by VMs. - * glue/valuearray.c : field accessors - * glue/Makefile.am : add new glue file - * glue/makefile.win32 : add new glue file - [Fixes #52680] - -2004-01-13 John Luke <jluke@cfl.rr.com> - - * en/Gtk/Dialog.custom: add more Gtk.ResponseType overloads - -2004-01-10 John Luke <jluke@cfl.rr.com> - - * samples/GtkDemo/*.cs: make it compile - patch from Yves Kurz <ml_yves@magnific.ch> - -2004-01-09 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : hide NotebookPage.Num method - * gtk/Notebook.custom : implement PageNum. - * gtk/gtk-api.xml : regen - -2004-01-09 John Luke <jluke@cfl.rr.com> - - * gtk/Gtk.metadata: Hide most RadioButton constructors, for - api reasons - * gtk/RadioButton.custom: add ctor to create a new RadioButton - with its own group to avoid having to pass null - * gtk/gtk-api.xml: regen - -2004-01-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : rename TreeView.RowExpand to GetRowExpanded. - * gtk/gtk-api.xml : regen - -2004-01-07 John Luke <jluke@cfl.rr.com> - - * gtk/Dialog.custom: add AddActionWidget overload - -2004-01-07 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : TreeStore.Remove iter should be ref - * gtk/gtk-api.xml : regen - -2004-01-06 John Luke <jluke@cfl.rr.com> - - * gtk/Gtk.metadata: change uint to GtkAccelKey for Widget.AddAccelerator - * gtk/gtk-api.xml: regenerated - -2004-01-05 Mike Kestner <mkestner@ximian.com> - - * configure.in : tagged 0.15 and updated version. - -2003-12-30 Mike Kestner <mkestner@ximian.com> - - * glib/Object.cs (ConnectDefaultHandlers): reflection code to - hook up overridden default signal handlers. - * glue/type.c (gtksharp_override_virtual_method): peek the gtype - and ref the class if it isn't created yet. - * sample/Subclass.cs : update to override Button.OnClicked. - -2003-12-26 Mike Kestner <mkestner@ximian.com> - - * glue/selectiondata.c : new glue to make SelectionData opaque - * glue/Makefile.am : add file - * glue/makefile.win32 : add file - * gtk/Gtk.metadata : mark SelectionData opaque, unhide Set method - * gtk/SelectionData.custom : invoke glue methods for opaque fields. - * gtk/gtk-api.xml : regen - * sample/TestDnd.cs : update to new SelectionData API. - -2003-12-24 John Luke <jluke@cfl.rr.com> - - * gtk/Label.custom: add public default constructor - * gtk/gtk-api.xml: - * gtk/Gtk.metadata: make gtk_label_new_with_mnemonic the - preferred constructor, disable protected default ctor - -2003-12-21 John Luke <jluke@cfl.rr.com> - - * glib/Idle.cs: add Remove method found in Alp Toker's platano - -2003-12-16 Joe Shaw <joe@ximian.com> - - * generator/SymbolTable.cs (MangleName): Add "lock" and "callback" - to the list of names that need to be mangled. The former is a C# - reserved keyword and the latter is already used as an argument to - methods which marshal callbacks. - -2003-12-15 Mike Kestner <mkestner@ximian.com> - - * generator/BoxedGen.cs : s/uint/GLib.GType - * generator/ManualGen.cs : add a ctor to pass ToNative handle name - * generator/ObjectGen.cs : s/uint/GLib.GType - * generator/Signal.cs : use GLib.GType and call OverrideVirtualMethod - * generator/SymbolTable.cs : make GType a ManualGen and update a few - ManualGens to the new signatures. - * glib/DefaultSignalHandler.cs : s/Type/System.Type - * glib/ManagedValue.cs : s/uint/GLib.GType - * glib/Object.cs : s/uint/GLib.GType, add OverrideVirtualMethod. - * glib/Type.cs : s/uint/IntPtr, add static fields for fundamentals. - make it a value type and add ==, !=, Equals, and GetHashCode. - * glib/TypeConverter.cs : use new GType statics, not fundamentals. - * glib/Value.cs : use new GType statics, not fundamentals. - * gnome/*.custom : s/uint/GLib.GType - * gtk/*Store.custom : use GType statics, not fundamentals. - * sample/Subclass.cs : s/uint/GLib.GType. - -2003-12-12 Mike Kestner <mkestner@ximian.com> - - * generator/CallbackGen.cs : kill some redundant generation - * generator/MethodBody.cs : pass array parameters as arrays of - the corresponding native type. - -2003-12-12 Mike Kestner <mkestner@ximian.com> - - * gnome/gnome-api.xml : regen'd - * parser/gapi2xml.pl : handle typedef enum _foo foo; - * parser/gapi-parser : support <exclude> elements in addition to <dir> - and <file> to specify the sources to be parsed. - -2003-12-12 Radek Doulik <rodo@ximian.com> - - * gtk/Gtk.metadata: hide TextTag.Weight property and implement it - in TextTag.custom. TextTag Weight property in gtk is of type int, - but we want it to be Pango.Weight enum - -2003-12-10 Radek Doulik <rodo@ximian.com> - - * glue/program.c (get_default): moved check after strspec is set - so we don't check uninitialized value - -2003-12-10 Mike Kestner <mkestner@ximian.com> - - * generator/CallbackGen.cs : kill ref_owned generation - * generator/ClassBase.cs : use simple GetObject w/o ref_owned - * generator/ManagedCallString.cs : new class to generate native - to managed method calls. - * generator/Method.cs : kill ref_owned generation - * generator/MethodBody.cs : kill ref_owned generation - * generator/Property.cs : kill ref_owned generation - * generator/Signal.cs : generate delegates and vtable connect - methods for all signals. Mark VMs with new attr. - * generator/StructBase.cs : kill ref_owned generation - * glib/DefaultSignalHandlerAttribute.cs : new attr to mark - virtual methods. - * glib/Object.cs : add overload for GetObject that defaults - to ref_owned=false. Add extern for VM override glue. - -2003-12-08 Luciano Martorella <mad_lux_it@users.sourceforge.net> - - * gdk/Gdk.metadata : ref/array tags - * gdk/Colormap.custom : removed - * gdk/gdk-api.xml : regen - -2003-12-08 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs : add virtual method generation for the - default signal handlers. - * glib/Object.cs : add g_signal_chain_from_overridden extern - -2003-12-08 Mike Kestner <mkestner@ximian.com> - - * generator/VMSignature.cs : new class to generate virtual method - signatures for default signal handlers. - -2003-12-08 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs : stupid little whitespace change - -2003-12-08 Mike Kestner <mkestner@ximian.com> - - * glue/type.c : new glue for g_signal_override_class_closure - -2003-12-07 Mike Kestner <mkestner@ximian.com> - - * gnome/Gnome.metadata : About ctor's logo_pixbuf is null_ok - * gnome/gnome-api.xml : regen - -2003-12-04 Mike Kestner <mkestner@ximian.com> - - * glib/Object.cs : kill unused WrapperClassAttribute. [#51458] - -2003-12-04 Mike Kestner <mkestner@ximian.com> - - * parser/gapi2xml.pl : fix for const param handling [#50295] - -2003-12-03 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : use new sig and isig classes. - * generator/Ctor.cs : use new sig, isig, and body classes. - * generator/ImportSignature.cs : isig code spun out from Parameters. - * generator/Method.cs : use new sig, isig, and body classes. - * generator/MethodBody.cs : spun Initialize, GetCallString, - Finish, and Exception throwing methods from Parameters. - * generator/Parameters.cs : Slayed the evilness that was CreateSignature. - It is now essentially a container for Parameter classes instead of a - tangled mess of code trying to do everything remotely related to - parameter lists. Also completely killed the VAType/IsVarArgs stuff, - as it can be done with the array and params attrs instead. - * generator/Property.cs : use new sig class. - * generator/Signature.cs : new method sig generator extracted from - Parameters class. add "params" keyword support for tagged parameters. - * gnome/Gnome.metadata : hide IconList.GetSearchPath (to be manual) - * gnome/gnome-api.xml : regen - * gtk/ListStore.custom : kill unneeded overload - * gtk/TreeStore.custom : kill unneeded overload - * gtk/Gtk.metadata : mark params/args on *store_newv - * gtk/gtk-api.xml : regenerated - -2003-12-03 Ettore Perazzoli <ettore@ximian.com> - - * sample/TestDnd.cs: New. - * gtk/TargetEntry.custom: New. - * glue/dragcontext.c: New. - * glib/Object.cs: New public property TypeName in class Object. - * gdk/DragContext.custom: New. - -2003-11-30 Mike Kestner <mkestner@speakeasy.net> - - * art/art-symbols.xml : add some simple types to clean up generation. - * art/Makefile.in : add art-symbols.xml - -2003-11-29 Mike Kestner <mkestner@speakeasy.net> - - * gtk/Gtk.metadata : fix targets for Drag.SourceSet. - * gtk/gtk-api.xml : regen - -2003-11-29 Mike Kestner <mkestner@speakeasy.net> - - * generator/Parameters.cs : handle null_ok for arrays. - * gtk/Gtk.metadata : mark a null_ok in Drag.DestSet - * gtk/gtk-api.xml : regen - -2003-11-29 Mike Kestner <mkestner@speakeasy.net> - - * gdk/Pixbuf.custom : revert Miguel's commit. - -2003-11-29 Mike Kestner <mkestner@speakeasy.net> - - * */Makefile.in : remove the nowarns - * gdk/Rectangle.custom : add System.Drawing.Rect implicit cast op. - * sample/Size.cs : use System.Drawing.Rectangles - * sample/GnomeHelloWorld.cs : remove an unneeded null check - -2003-11-29 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs : remove ==/!= operator generation. - -2003-11-28 Miguel de Icaza <miguel@ximian.com> - - * gdk/Pixmap.custom: Added Pixmap.custom to add a convenience constructor. - -2003-11-27 Miguel de Icaza <miguel@ximian.com> - - * glib/Log.cs: Make LogLevelFlags CLS compliant. - - * glib/SignalCallback.cs: Set the constructor protection level to - protected, since it can not be instantiate.d - - * glib/Marshaller.cs: Do not allow instances of this class as it - only exposes static methods. - - * glib/Source.cs, glib/FileUtils.cs, glib/Timeout.cs, - glib/Thread.cs, glib/Markup.cs, glib/TypeConverter.cs: Ditto. - -2003-11-29 Mike Kestner <mkestner@speakeasy.net> - - * gdk/Gdk.metadata : add some array attrs to Pixbuf ctors. - * gdk/Pixbuf.custom : remove unneeded overloads. - * gdk/gdk-api.xml : regenerated - -2003-11-23 Mike Kestner <mkestner@ximian.com> - - * generator/SignalHandler.cs : use CONNECT_AFTER. - -2003-11-22 John Luke <jluke@cfl.rr.com> - - * sample/PrintSample.cs: add small Gnome.Print example - * sample/Makefile.in: add print example to gnome build - -2003-11-19 Peter Williams <peter@newton.cx> - - * gtk/Gtk.metadata: Add some array attributes for some "type *elem, - int n_elem" array params. - -2003-11-19 Mike Kestner <mkestner@ximian.com> - - * parser/gapi_pp.pl : handle files and dirs in ARGV. - * parser/gapi2xml.pl : deal with struct keyword in param decls - * parser/gapi-parser : handle <file> elements. - -2003-11-18 Mike Kestner <mkestner@ximian.com> - - * configure.in : tagged for 0.14 and bumping VERSION. - -2003-11-18 Mike Kestner <mkestner@ximian.com> - - * gtkhtml/Makefile.in : make the install target conditional too. - -2003-11-18 Moritz Balz <verteiler@mbalz.de> - - * gdk/Window.custom : remove Visible and Viewable since the Is* - methods are now gen'd as properties. - -2003-11-18 Mike Kestner <mkestner@ximian.com> - - * pango/Pango.metadata : mark ref params on LayoutLine.GetExtents - and GetPixelExtents. [Fixes #50338] - * pango/pango-api.xml : regenerated. - -2003-11-18 Peter Williams <peter@newton.cx> - - * gtk/NodeStore.cs (GetNode): New public function. Patch refactored - a bit to eliminate code duplication with get_node_cb. - -2003-11-18 John Luke <jluke@cfl.rr.com> - - * configure.in: test for gtkhtml3 - * gtkhtml/Makefile.in: build conditionally - -2003-11-18 Mike Kestner <mkestner@ximian.com> - - * gdk/Pixbuf.custom : resurrect the stream/resource ctors. rename - LoadResource to LoadFromResource for the string overload. - * gdk/PixbufLoader.custom: add an internal prop to get an unwrapped - pixbuf handle. - -2003-11-17 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gdk/Pixbuf.custom: - (LoadResource (assembly, resource)): a null assembly uses the calling - assembly. - -2003-11-17 Ettore Perazzoli <ettore@ximian.com> - - * gdk/Pixbuf.custom: Removed the Assembly constructors. - (Pixbuf.LoadResource (string)): New. - (Pixbuf.LoadResource (Assembly, string)): New. - -2003-11-16 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters: handle array+len param pairs. - * gtk/Gtk.metadata : unhide DestDefaults and mark targets param of - drag_dest_set as array. - * gtk/gtk-api.xml : regenerate - -2003-11-14 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : fully qualify attr paths - * parser/gapi-fixup.cs : compile a path expression per Ben Maurer - suggestion. - -2003-11-14 Mike Kestner <mkestner@ximian.com> - - * configure.in : update VERSION to 0.14. Tagged 0.13. - -2003-11-13 Mike Kestner <mkestner@ximian.com> - - * generator/SignalHandler.cs : guard against destroyed signalhandlers. - -2003-11-07 Mike Kestner <mkestner@ximian.com> - - * configure.in : add mono check. expand wrapper scripts - * generator/Makefile.in : use install. install a gapi-codegen wrapper. - * generator/SymbolTable.cs : add SimpleGen for short - * generator/gapi-codegen.in : new wrapper script in file. - * parser/Makefile.in : use install. install a gapi-fixup wrapper. - * generator/gapi-fixup.in : new wrapper script in file. - * parser/gapi2xml.pl : deal with non-namespaced enums. ignore - forward struct declarations. - -2003-11-05 Mike Kestner <mkestner@ximian.com> - - * gtk/ITreeNode.cs : make Parent readonly - * gtk/TreeNode.cs : use an internal method to set parent on the - child, and set child.Parent to null in RemoveChild. - -2003-11-05 Moritz Balz <verteiler@mbalz.de> - - * gdk/Window.custom : System.Drawing.Rectangle/Point customizations - -2003-11-05 Mike Kestner <mkestner@ximian.com> - - * gtk/TreeNodeAttribute.cs : sealed per Ben Maurer's suggestion. - * gtk/TreeNodeValueAttribute.cs : ditto - -2003-11-04 Mike Kestner <mkestner@ximian.com> - - * glib/Value.cs : add set to Val prop - * glue/Makefile.am : build nodestore.c - * glue/makefile.win32 : link nodestore.o - * glue/nodestore.c : new, glue for TreeModel implementation - * gtk/NodeStore.cs : new tree store implementation - * gtk/ITreeNode.cs : new interface for nodestore node types - * gtk/TreeNode.cs : abstract class for deriving nodestore nodes - * gtk/TreeNodeAttribute.cs : tree node marking attr - * gtk/TreeNodeValueAttribute.cs : node column marking attr - * gtk/TreeView.custom : add ctor(NodeStore) - -2003-11-04 John Luke <jluke@cfl.rr.com> - - * sources/makefile: add gstreamer 0.6.4 sources - * sources/gstreamer-parse.patch: fixes to parse gst - * gst/Gst.metadata: new metadata - * gst/Makefile.in: add gapi-fixup to Makefile - * gst/gst-api.xml: new api file for 0.6.4 - - * gtk/Gtk.metadata: set correct preferred constructor for button - * gtk/gtk-api.xml: regenerated - -2003-11-02 Mike Kestner <mkestner@ximian.com> - - * generator/CallbackGen.cs : use a temporary ret value if there - is any cleanup to be done after the call. Thanks to John Luke - for a patch which identified the problem. - -2003-11-01 Radek Doulik <rodo@ximian.com> - - * gtk/TreeModelSort.custom: implementation of GetValue/SetValue - (copied from TreeStore.custom) - - * gtk/TreeModel.custom: added GetValue/SetValue - -2003-10-30 Ken Foster <kenfoster@tampabay.rr.com> - - * glue/button.c: initial creating of glue file for GdkButton - * glue/Makefile.am: added button.c to glue make - * glue/makefile.win32: added button.c to win32 glue make - * gtk/Button.custom: expose in_button GdkButton member - -2003-10-29 Martin Willemoes Hansen <mwh@sysrq.dk> - - * generator/Method.cs: marked Is and Has methods, - to be generated as properties, fixes bug [47910] - -2003-10-28 Mike Kestner <mkestner@ximian.com> - - * configure.in : releasing 0.12 - -2003-10-28 Mike Kestner <mkestner@ximian.com> - - * */Makefile.in : create the apidir before installing to it. - -2003-10-28 Mike Kestner <mkestner@ximian.com> - - * generator/BoxedGen.cs : generate GLib.Value ctors. [fixes #47168] - * generator/Property.cs : use new Boxed value ctors. - * generator/StructBase.cs : use existing Writer if available. - -2003-10-27 Moritz Balz <verteiler@mbalz.de> - - * gdk/Drawable.custom : add a S.D.Rectangle overload for DrawRect. - -2003-10-26 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gtk/Gtk.metadata: Added the rest of sources/Gtk.metadata - and sorted the metadata. - * gtk/gtk-api.xml: Regenerated, to reflect the above changes. - Tags are swapped around. PaintBox, PaintBoxGap, PaintShadow and - PaintShadowGap are moved arround as well. - * sources/Gtk.metadata: Removed - -2003-10-23 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gtk/Gtk.metadata: Added metadata from sources/Gtk.metadata - * gtk/gtk-api.xml: Reflects changes of the metadata move, - tags are swapped around. - * sources/Gtk.metadata: Removed metadata, which are moved to - gtk/Gtk.metadata - -2003-10-22 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gtk/Gtk.metadata: Added metadata from sources/Gtk.metadata - * gtk/gtk-api.xml: Reflects changes of the metadata move, - tags are swapped around. - * gtkhtml/Gtk.metadata: Added metadata from sources/Gtk.metadata - * gtkhtml/gtkhtml-api.xml: Reflects changes of the metadata move, - tags are swapped around. - * sources/Gtk.metadata: Removed metadata, which are moved to - gtk/Gtk.metadata and gtkhtml/Gtk.metadata - -2003-10-22 Mike Kestner <mkestner@ximian.com> - - * gtkhtml/gtkhtml-api.xml : regenerated - * sources/makefile : add gtkhtml-embedded.* to the parse. Patch - proposed by orph on bug #49875. - -2003-10-20 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : mark TargetEntry.flags as type TargetFlags. - * gtk/gtk-api.xml : regenerated [fixes #49859] - -2003-10-20 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs : treat interface out params like objects. - * gtk/gtk-api.xml : regenerated - * gtk/Gtk.metadata : mark TreeSelection.GetSelected params out. - * gtk/TreeSelection.custom : emptied since it's now generated. - * sources/Gtk.metadata : kill hide of TreeSelection.GetSelected. - [fixes #49858] - -2003-10-20 Mike Kestner <mkestner@ximian.com> - - * atk/atk-api.xml : regenerated - * gdk/gdk-api.xml : regenerated - * gtk/gtk-api.xml : regenerated - * gtkhtml/gtkhtml-api.xml : regenerated [Fixes #49875] - * parser/gapi2xml.pl : handle unnamed parameter declarations. - -2003-10-20 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs : add a cast to the call_string for Length - params other than int. - -2003-10-18 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : add move-node rules for Paint methods. - * gtk/gtk-api.xml : regenerated - * parser/gapi2xml.pl : put paint_ methods in global, not Paint. - * parser/gapi-fixup.cs : add move-node rule handling. [Fixes #47980] - -2003-10-17 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs : mark enum pointer params as out. - need to audit if any are really arrays. [Fixes #49779] - -2003-10-17 Mike Kestner <mkestner@ximian.com> - - * gtk/Window.cs : override Raw prop and take a ref, since gtk+ - owns the ref to new Windows, and we need a ref. [Fixes #47721] - -2003-10-17 Mike Kestner <mkestner@ximian.com> - - * gnome/CanvasPoints.custom : make New overload a ctor overload. - * gnome/Gnome.metadata : mark CanvasPoints as opaque - * gnome/gnome-api.xml : regenerated. [Fixes #37256] - -2003-10-17 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gtk/ThreadNotify.cs: close the pipe and detach the GSource when - explicitly requested or finalized. - -2003-10-17 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gconf/tools/schemagen.cs: support for lists. - -2003-10-15 Mike Kestner <mkestner@ximian.com> - - * generator/Property.cs : use new Opaque value ctor and - rework get/set blocks for Opaque types. [Fixes #47959] - * glib/Opaque.cs : kill explicit IntPtr operator. - * glib/Value.cs : rework Opaque value ctor. - - -2003-10-14 Mike Kestner <mkestner@ximian.com> - - * gtk/Gtk.metadata : rule for ClipboardGetFunc - * gtk/Clipboard.custom : comment out for now don't think any - of this is needed. - * gtk/ClipboardClearFunc.cs : gen'd now - * gtk/ClipboardGetFunc.cs : gen'd now - * gtk/GtkSharp.GtkClipboardClearFuncNative.cs : gen'd now - * gtk/GtkSharp.GtkClipboardGetFuncNative.cs : gen'd now - * gtk/gtk-api.xml : regenerated - * sources/Gtk.metadata : remove a couple clipboard hides - -2003-10-14 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * gtk/Gtk.metadata : begin the port of the Gtk rules - * gtk/Makefile.in : apply metadata in gen target - * gtkhtml/gtkhtml-api.xml : regenerated - * gtkhtml/Gtk.metadata : a couple rules ported - * gtkhtml/Makefile.in : apply metadata in gen target - * sources/Gtk.metadata : port first 350 lines of rules. - -2003-10-14 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * sources/Gtk.metadata : removed all the obsolete "out" rules - -2003-10-13 Mike Kestner <mkestner@ximian.com> - - * gdk/Gdk.metadata : mark an array param on PixbufDestroyNotify - * gdk/gdk-api.xml : regenerated - * generator/CallbackGen.cs : Handle out params in callback sigs - and ditch the object[] args handling for typed args. - * generator/Parameters.cs : more proactive PassAs logic. We now - default all simple pointer types (uint*, int*, double*, etc...) - to out params unless they are marked otherwise in the XML with a - pass_as tag or an array tag. [Fixes #32104] - -2003-10-13 Mike Kestner <mkestner@ximian.com> - - * gnome/Gnome.metadata : new xpath metadata rules - * gnome/Makefile.in : apply metadata before generation - * gnome/gnome-api.xml : regenerated - * parser/gapi-fixup.cs : use XmlDocument.Save (filename) - instead of opening a stream manually. - * sources/Gnome.metadata : killed - -2003-10-12 Mike Kestner <mkestner@ximian.com> - - * art/Art.metadata : new xpath metadata rules - * art/Makefile.in : apply metadata before generation - * atk/Atk.metadata : new xpath metadata rules - * atk/Makefile.in : apply metadata before generation - * gda/Gda.metadata : new xpath metadata rules - * gda/Makefile.in : apply metadata before generation - * gdk/Gdk.metadata : new xpath metadata rules - * gdk/Makefile.in : apply metadata before generation - * gnomedb/GnomeDb.metadata : new xpath metadata rules - * gnomedb/Makefile.in : apply metadata before generation - * pango/Pango.metadata : new xpath metadata rules - * pango/Makefile.in : apply metadata before generation - * parser/Makefile.in : build and install new gapi-fixup - * parser/gapi-fixup.cs : new xpath based metadata engine - * sources/*.metadata : remove most of the old metadata, - still have to convert Gtk and Gnome to xpaths. - -2003-10-11 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * sources/Gtk.metadata : applied patch from jluke for hides - requested in bug #38660. Also cleaned up the sprawling "hidden" - rules to reduce the overall footprint. - -2003-10-11 Mike Kestner <mkestner@ximian.com> - - * generator/OpaqueGen.cs (FromNativeReturn): just do a - new on the type. GLib.Opaque.GetOpaque was apparently an - homage to GetObject that just seems wrong. - -2003-10-11 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * sources/Gtk.metadata : markes some out tags on - TreeView.GetCursor. [Fixes #49556] - -2003-10-11 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs : Properly handle out params for - Object and Opaque types. - * gtk/ListStore.custom: remove out on GetValue overload - * gtk/TreeStore.custom: remove out on GetValue overload - * gtk/gtk-api.xml : regenerated - * sources/Gtk.metadata : remove some incorrect out tags - [Fixes #49517] for real this time. - -2003-10-10 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * sources/Gtk.metadata : mark pos and path pass_as="out" for - TreeView.GetDragDestRow and GetDestRowAtPos [Fixes #49517] - -2003-10-10 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * gtk/TreePath.custom : implement Indices property by - hand. Patch from tds00mahi@thn.htu.se (malte) [Fixes #49518] - * sources/Gtk.metadata : hide TreePath.Indices. - -2003-10-10 Mike Kestner <mkestner@ximian.com> - - * gtk/gtk-api.xml : regenerated - * gtk/FileSelection.custom : implement the Selections property by - hand. [Fixes #49254] - * sources/Gtk.metadata : hide FileSelection.GetSelections. - -2003-10-10 Mike Kestner <mkestner@ximian.com> - - * */makefile.win32 : remove api dir from build and fix clean target - -2003-10-10 Mike Kestner <mkestner@ximian.com> - - * gdk/gdk-api.xml : regenerated - * sources/Gdk.metadata : mark Cursor opaque. mark confine_to and - cursor null_ok in Gdk.Pointer.Grab. [Fixes #48273] - -2003-10-09 Mike Kestner <mkestner@ximian.com> - - * generator/Statistics.cs (Report): pretty it up. - * generator/SymbolTable.cs : handle const-xmlChar as ConstString - -2003-10-09 Mike Kestner <mkestner@ximian.com> - - * pango/Makefile.in : fix path to glib-sharp.dll - -2003-10-10 Martin Willemoes Hansen <mwh@sysrq.dk> - - * Makefile.in: Updated to reflect moval of api xml files from api/ - to each assembly dir. - * configure.in: Ditto - * art/.cvsignore Ditto - * art/Makefile.in: Ditto - * atk/.cvsignore Ditto - * atk/Makefile.in: Ditto - * gda/.cvsignore Ditto - * gda/Makefile.in: Ditto - * gdk/.cvsignore Ditto - * gdk/Makefile.in: Ditto - * gdk/gdk-symbols.xml Ditto - * glade/.cvsignore Ditto - * glade/Makefile.in: Ditto - * gnome/.cvsignore Ditto - * gnome/Makefile.in: Ditto - * gnomedb/.cvsignore Ditto - * gnomedb/Makefile.in: Ditto - * gst/.cvsignore Ditto - * gst/Makefile.in: Ditto - * gtk/.cvsignore Ditto - * gtk/Makefile.in: Ditto - * gtk/gtk-symbols.xml Ditto - * gtkhtml/.cvsignore Ditto - * gtkhtml/Makefile.in: Ditto - * pango/.cvsignore Ditto - * pango/Makefile.in: Ditto - * rsvg/.cvsignore Ditto - * rsvg/Makefile.in: Ditto - * sources/gtk-sharp-sources.xml: Ditto - * api/: Removed - -2003-10-09 Mike Kestner <mkestner@ximian.com> - - * api/*-api.xml : regenerated - * parser/gapi_pp.pl : ignore simple comments. [Fixes #47450] - * parser/gapi2xml.pl : turn off debug. - -2003-10-09 Mike Kestner <mkestner@ximian.com> - - * generator/Property.cs : don't do new for Objects if FromNativeReturn - returns null. [Fixes #48055] - -2003-10-08 Mike Kestner <mkestner@ximian.com> - - * */Makefile.in : rework the prefix handling for duncan's packaging. - -2003-10-08 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gnome/PrintJob.custom: Added default ctor. - * gnome/PrintDialog.custom: Added overloaded ctor with fewer parameters. - * sources/Gnome.metadata: Disabled default ctor for PrintJob, - changed type from int to PrintDialogFlags for PrintDialog ctor and - changed return type from byte to string for PrintConfig.Get. - -2003-10-07 Mike Kestner <mkestner@ximian.com> - - * api/gtk-api.xml : regenerated - * generator/Method.cs : gen new_flag automatically if set - * sources/Gtk.metadata : mark new_flag on Gtk.Bin.GetChild - -2003-10-07 Mike Kestner <mkestner@ximian.com> - - * generator/ObjectGen.cs (Generate): check sigs.Count in addition - to the null check to determine if the signals hash should be - generated. - -2003-10-07 Mike Kestner <mkestner@ximian.com> - - * parser/gapi2xml.pl : look for ");" at the end of property - declarations to avoid problems with ';' in property docstrings. - * api/gtk-api.xml : regenerated. [Fixes #47987] - -2003-10-07 Mike Kestner <mkestner@ximian.com> - - * glib/ListBase.cs : assume ref_owned=false for GObject lists. - [Fixes #49145] - -2003-10-07 Mike Kestner <mkestner@ximian.com> - - * gtkhtml/Makefile.in : add art-sharp ref - * sources/Gtk.metadata : make gtk_widget_size_request pass_as ref - instead of out. [Fixes #46354] - -2003-10-07 Mike Kestner <mkestner@ximian.com> - - * gtkhtml/Makefile.in : add gnome api to includes and ref in build - * gtkhtml/gkthtml-api.xml : regenerated - * sources/Gtk.metadata : remove the gtkhtml gnomeprint hides - -2003-10-06 Mike Kestner <mkestner@ximian.com> - - * Makefile.in : add gtkhtml dir. - * configure.in : expand gtkhtml/Makefile - * api/Makefile.in : remove gtkhtml-api.xml - * generator/CodeGenerator.cs : parse new --outdir, --customdir, - and --assembly-name args. - * generator/GenerationInfo.cs (Ctor): new (dir, dir,assembly) ctor - * gtkhtml/HTMLStream.custom : moved here from gtk dir - * gtkhtml/gtkhtml-api.xml : moved here from api dir - * gtkhtml/Makefile.in : gen source and build dll - * sources/gtk-sharp-sources.xml : write gtkhtml api to new dir - -2003-10-06 Artem Popov <artemis@yandex.ru> - - * gtk/Dialog.custom : Action area is an HButtonBox, not a VBox. - -2003-10-06 Mike Kestner <mkestner@ximian.com> - - * generator/InterfaceGen.cs (Generate): gen the EventHandlers for sigs - * generator/Signal.cs (GetHandlerName): kill this and split it into - EventHandlerName and EventHandlerArgsName props instead of the ugly - out param hack. - (GenEventHandler): make public void and add gen_info param. open - stream with gen_info. use new *Name props. - (Generate): only gen the EventHandler if we're genning the container, - not for implementors. - -2003-10-06 Mike Kestner <mkestner@ximian.com> - - * generator/CodeGenerator.cs (Main): use new ObjectGen.GenerateMappers. - * generator/GenerationInfo.cs (Ctor): new (dir, assembly) ctor - * generator/ObjectGen.cs : move hash management to Generate from Ctor, - index it on dir, and make it hold new DirectoryInfo refs. Refactor - GenerateMapper. The object mappers are now assembly based instead of - namespace based. - -2003-10-06 Mike Kestner <mkestner@ximian.com> - - * generator/Signal.cs (Generate): pass gen_info to sighdnlr.Generate. - use gen_info.AssemblyName in Args instantiation. - * generator/SignalHandler.cs (Generate): use gen_info to open stream. - refactor out some local vars. - -2003-10-04 Mike Kestner <mkestner@ximian.com> - - * generator/CallbackGen.cs : remove CloseWriter call. - * generator/GenBase.cs : kill CreateWriter and CloseWriter. - -2003-10-04 Mike Kestner <mkestner@ximian.com> - - * generator/AliasGen.cs : stub new Generate overload. - * generator/BoxedGen.cs : implement new Generate overload. - * generator/CallbackGen.cs (Generate):implement new overload. - * generator/ClassBase.cs : implement new Generate overload and - pass around the gen_info. - * generator/ClassGen.cs : implement new Generate overload. - * generator/Ctor.cs (Generate): s/sw/gen_info. - * generator/EnumGen.cs : implement new Generate overload. - * generator/GenBase.cs : expose NSElem, add gen_info param to - AppendCustom. kill CreateWriter. - (GenWrapper): add gen_info param and use it to open stream. - * generator/GenerationInfo.cs : new class to pass around generation - related information and perform tasks like opening streams. - * generator/IGeneratable.cs : add Generate(gen_info) overload. - * generator/InterfaceGen.cs : implement new Generate overload. - * generator/ManualGen.cs : stub new Generate overload. - * generator/Method.cs (Generate): accept gen_info. kill GenerateComments. - * generator/ObjectGen.cs : implement new Generate overload. - * generator/OpaqueGen.cs : implement new Generate overload. - * generator/Parameters.cs (Initialize): s/sw/gen_info. - * generator/Property.cs (Generate): accept gen_info. - * generator/Signal.cs (Generate): accept gen_info. - * generator/SimpleGen.cs : stub new Generate overload. - * generator/StructBase.cs : s/sw/gen_info - * generator/StructGen.cs : implement new Generate overload. - -2003-10-03 Mike Kestner <mkestner@ximian.com> - - * generator/GenBase.cs : remove unused do_generate private member. - -2003-10-03 Mike Kestner <mkestner@ximian.com> - - * generator/*.cs : Kill DoGenerate. - -2003-10-03 Mike Kestner <mkestner@ximian.com> - - * api/gtk-symbols.xml : make GtkType a uint like GType. - * generator/CodeGenerator.cs : adopt new parser semantics - * generator/Parser.cs : move to single parser/multiple Parse. Remove - DoGenerate hack and let the CodeGenerator control this. Return - generatables instead of loading symboltable. - * generator/SymbolTable : add AddTypes method. Revamp dealiasing code. - -2003-10-02 Mike Kestner <mkestner@ximian.com> - - * api/gnome-api.xml : regenerated - * parser/gapi2xml.pl : handle enum <name> {...}; Thanks to - Martin for identifying the bug and providing a candidate patch. - -2003-10-01 Mike Kestner <mkestner@ximian.com> - - * README.generator : updates for new parser script - * api/Makefile.in : add gtkhtml-api.xml - * api/*-api.xml : regenerated - * parser/makefile : install new parsing script - * parser/gapi-parser : new xml-driven parsing script - * sources/makefile : call new parsing script - * sources/gtk-sharp-sources.xml : new parser input file - * sources/gtk-sharp.sources : killed - -2003-09-29 Martin Willemoes Hansen <mwh@sysrq.dk> - - * sources/Gnome.metadata: Use const-gchar* instead of const-guchar*, - when the value is realy a string - * api/gnome-api.xml: Ditto - -2003-09-28 Martin Willemoes Hansen <mwh@sysrq.dk> - - * sources/gtk-sharp.sources: Fixed, wrong library used for libgnomeprintui - * api/gnome-api.xml: Ditto - -2003-09-23 John Luke <jluke@cfl.rr.com> - - * README: - * sources/README: reflect the current targets - -2003-09-19 Rachel Hestilow <rachel@nullenvoid.com> - - * sources/Gtk.metadata, api/gtk-api.xml: Rename - 'Event' signals on Widget and TextTag to WidgetEvent - and TextTag event, respectively, to avoid - ambiguity with System.EventHandler/EventArgs. - -2003-09-18 Mike Kestner <mkestner@ximian.com> - - * configure.in : releasing 0.11 - -2003-09-17 Rachel Hestilow <rachel@nullenvoid.com> - - * glib/DelegateWrapper.cs: Remove 'RemoveIfNotAlive' - and revamp the memory management to use destroy - notification. - - * generator/CallbackGen.cs: Do not generate the call to - RemoveIfNotAlive. - - * gtk/GtkSharp.GtkClipboardGetFuncNative, - GtkSharp.GtkClipboardClearFuncNative: Do not call - RemoveIfNotAlive. - -2003-09-17 Rachel Hestilow <rachel@nullenvoid.com> - - * generator/StructBase.cs: Make pointer, wrapped, - bitfield, and dummy fields private fields. - -2003-09-16 Martin Willemoes Hansen <mwh@sysrq.dk> - - * api/gda-api.xml: Updated to reflect new versions of the targeted - libraries + addition of GnomePrint - * api/gdk-api.xml: Ditto - * api/gnome-api.xml: Ditto - * api/gnomedb-api.xml: Ditto - * api/gtk-api.xml: Ditto - * api/rsvg-api.xml: Ditto - * sources/.cvsignore: Ditto - * sources/makefile: Ditto - * sources/gtk-sharp.sources: Ditto - * sources/Gda.metadata: Added a couple of new_flags - * sources/Gdk.metadata: Fixed name filter level type, it was missed by - the parser. - * sources/Gtk.metadata: Added hides for the GtkHtml releations to GnomePrint, - these hides can be removed when GtkHtml is put in its own assembly. - -2003-09-14 Mike Kestner <mkestner@ximian.com> - - * Makefile.in : add a gen-clean target to clean all but glue/parser. - * generator/Signal.cs : use restructured SignalHandler. - * generator/SignalHandler.cs (GetName): break up this monument to - structured programming. - -2003-09-12 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs (CreateSignature): begin refactoring this - unholy mess. Eliminated one pass thru the param list. Eliminated - prev/curr param refs. Switched to a for loop since lookbacks are - required. - -2003-09-11 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs : keep an ArrayList of Parameter objects - and refactor the hell out of the joint using the new Count and this[]. - Still need to refactor a couple methods. - -2003-09-11 Mike Kestner <mkestner@ximian.com> - - * generator/Parameters.cs (IsLength): use a switch to make the - growing list of valid len types more readable. - -2003-09-11 Mike Kestner <mkestner@ximian.com> - - * generator/Ctor.cs : kill inline doc comments once and for all - * generator/EnumGen.cs : ditto - * generator/Method.cs : ditto - * generator/OpaqueGen.cs : ditto - * generator/Property.cs : ditto - -2003-09-11 Alp Toker <alp@atoker.com> - - * generator/Parameters.cs: Handle string length parameters specified - not just as int but also signed/unsigned int, long or short - -2003-09-07 Alp Toker <alp@atoker.com> - - * makefile.win32: New clean and release targets, and don't bother - building the samples (sample/makefile.win32 is out of date anyway) - * api/makefile.win32: - * glue/makefile.win32: - * makefile.win32: Glade# works perfectly on win32 now; include it in - the default build - * sample/GladeTest.cs: - * sample/GladeViewer.cs: Remove Gnome dependency and clean up - * glue/makefile.win32: Add -mms-bitfields for MSVC function name - mangling compatibility - -2003-09-06 Alp Toker <alp@atoker.com> - - * api/gdk-api.xml: - * sources/Gdk.metadata: out params for Gdk.Window.GetInternalPaintInfo - * glade/makefile.win32: new win32 makefile - * glue/win32dll.c: - * glue/makefile.win32: Patch to remove cygwin1.dll dependency on win32 - from Todd Berman <tberman@gentoo.org> - * glue/makefile.win32: Update list of sources - * glue/Makefile.am: Remind people to keep makefile.win32 up to date - -2003-09-03 Aleksey Sanin <aleksey@aleksey.com> - - * parser/GAPI/Metadata.pm: enable enums processing using - <class/> element syntax - - -2003-09-02 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gda/Makefile.in: Fixed bad nowarn options - -2003-08-31 Alp Toker <alp@atoker.com> - - * api/gdk-api.xml: - * sources/Gdk.metadata: out params for Gdk.Window.GetOrigin - -2003-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gdk/Pixbuf.custom: use windows dll name. Removed DllImport that is - already in the generated file. - - * glib/Thread.cs: use windows dll name. - - * gtk/ThreadNotify.cs: close <remark> comment. - -2003-08-28 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gdk/Pixbuf.custom: Added missing DllImport statement and - proper copyright header. - * api/gtk-api.xml: - * sources/Gtk.metadata: Fixed new_flag rules, they did not - get applied to the gtk-api.xml. - * generator/Parameters.cs: - * generator/StructBase.cs: - * generator/SymbolTable.cs: Fixed the keyword base was not - mangled, also did a little refactoring. - -2003-08-28 Alp Toker <alp@atoker.com> - - * glue/style.c: glue and corresponding .custom entries for - TextGC - -2003-08-26 John Luke <jluke@cfl.rr.com> - - * gtk/ThreadNotify.cs: mark dllimported methods private - -2003-08-26 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gconf/GConf/Value.cs: implemented support for lists. - - * glib/ListBase.cs: implemented the IDisposable stuff and created a - new method, FreeList, to free the list when needed. - - * glade/HandlerNotFoundException.cs: make it derive from - SystemException. Don't override Message, the message is created in the - .ctor. - -2003-08-26 Alp Toker <alp@atoker.com> - - * glue/style.c: glue and corresponding .custom entries for - BaseGC, plus the ability to set GCs - -2003-08-21 Martin Willemoes Hansen <mwh@sysrq.dk> - - * gnomeprint: - * api/gnomeprint-api.xml: Removed, gnomeprint is now included - in gnome. - -2003-08-19 John Luke <jluke@cfl.rr.com> - - * glib/ListBase.cs: Add convenience .Append (string) method - -2003-08-19 Martin Willemoes Hansen <mwh@sysrq.dk> - - * generator/Method.cs: Fixed bug where all ToString methods - was marked as override, this is only correct if the ToString - method does not have any parameters. - -2003-08-18 Aleksey Sanin <aleksey@aleksey.com> - - * generator/SignalHandler.cs : take refs on GObject sig parms. - -2003-08-15 Duncan Mak <duncan@ximian.com> - - * sources/Gtk.metadata (Gtk.TreeView.CellArea): Apply patch from - Aleksey Sanin <aleksey@aleksey.com> to declare the "Gdk.Rectangle - rect" parameter as an out parameter. This is required because - Gdk.Rectangle is a struct. - -2003-08-14 Martin Willemoes Hansen <mwh@sysrq.dk> - - * sources/Gnome.metadata: Renamed use of keyword base to Base - in GnomePrintUnit method GetIdentity. - Added GObject as the parent for GnomePrintTransport and - GnomePrintPdf - * sources/gtk-sharp.sources: Added libgnomeprintui/gpaui - -2003-08-13 Martin Willemoes Hansen <mwh@sysrq.dk> - - * sources/makefile: - * sources/gtk-sharp.sources: Added libgnomeprint-2.2.2 and - libgnomeprintui-2.2.2 - -2003-08-08 Mike Kestner <mkestner@ximian.com> - - * sources/gtk-sharp.sources : point to gtkhtml-3.0.8 dir - * sources/gtkhtml-font-style-enum.patch : ditto - * sources/makefile : fix some urls, make a get-gtkhtml-code - target, and use gtkhtml-3.0.8 instead of cvs. - -2003-08-06 Duncan Mak <duncan@ximian.com> - - * sources/Atk.metadata: Make Mr. Art.VpathDash an Opaque struct - instead of a plain ol' struct. - - * sources/Gtk.metadata (Gtk.Widget.SizeRequest): Mark the - requisition parameter as out. - -2003-08-06 Xavier Amado <xavier@blackbloodstudios.com> - - * gtk/Notebook.custom (CurrentPageWidget): Added a property for - getting the current page widget directly. - -2003-07-30 Duncan Mak <duncan@ximian.com> - - * sources/Gnome.metadata: - (CanvasItem.SetValist): - (CanvasItem.Construct): Hidden, because we don't support va_list - params. - - (CanvasItem): Hid the constructor, as each subclass has their own - contsructor and we don't support va_list params. - - (CanvasItem.W2i): - (CanvasItem.I2w): Marked parameters as ref, so they can be used as - in/out parameters. - - (Canvas.GetMiterPoints): - (Canvas.GetColor): Fixed return type to be 'bool' instead of 'int'. - - (CanvasClipgroup.Wind): Fixed property type. It should be an - Art.WindRule enum, not a UInt. - - (Canvas.W2cAffine): - (CanvasItem.AffineAbsolute): - (CanvasItem.AffineRelative): - (CanvasItem.I2wAffine): - (CanvasItem.I2cAffine): Hidden, use the impl. in the custom file - instead. - - * gnome/Canvas.custom: Added for W2cAffine. - * gnome/CanvasItem.custom: Reformatted. Added AffineRelative, - AffineAbsolute, I2wAffine, I2cAffine. These are needed because of - the 'const double affine[6]' parameter. - -2003-07-29 Duncan Mak <duncan@ximian.com> - - * sources/Gtk.metadata: - * api/gtk-api.xml: Marked the arguments to GetSelectionBounds and - GetLayoutOffsets as out params. - -2003-07-28 Duncan Mak <duncan@ximian.com> - - * glade/XML.custom: Added new convenience factory methods, - FromStream and FromAssembly. - -2003-07-27 Duncan Mak <duncan@ximian.com> - - * art/Makefile.in: - * atk/Makefile.in: - * gda/Makefile.in: - * gdk/Makefile.in: - * glade/Makefile.in: - * gnome/Makefile.in: - * gnomedb/Makefile.in - * gtk/Makefile.in: - * pango/Makefile.in: - * rsvg/Makefile.in: Suppress warnings CS0660 and CS0661. - -2003-07-23 Mike Kestner <mkestner@ximian.com> - - * gtk/FileSelection.custom : more s/new Object/GetObject - -2003-07-23 Mike Kestner <mkestner@ximian.com> - - [Equal credit to Ettore Perazzoli <ettore@ximian.com> for fixing - all the bugs in the initial patch] - * */*.custom : fix incorrect usage of new Object (IntPtr) where - Glib.Object.GetObject should've been used. add ref_owned param - to GetObject calls. - * generator/CallbackGen.cs : setup ref_owned in bodies - * generator/ClassBase.cs : add ref_owned to GetObject FromNative call - * generator/Method.cs : setup ref_owned in bodies - * generator/Property.cs : setup ref_owned in bodies - * generator/SignalHandler.cs : pass ref_owned to GetObject - * generator/StructBase.cs : setup ref_owned in bodies - * glib/Object.cs : kill Ref/Unref methods. Don't want it to be - easy for users to screw with ref counts, or make it look like they - should need to. - (GetObject): add ref_owned param and ref/unref to remain at 1 - * glib/Value.cs : pass ref_owned to GetObject - -2003-07-23 Martin Willemoes Hansen <mwh@sysrq.dk> - - * generator/ClassBase.cs: Fixed printouts of ctor validation. - Warnings refering to the same ctor were printed multiple times. - -2003-07-22 John Luke <jluke@cfl.rr.com> - - * sample/TreeViewDemo.cs: - remove GLib and System.Drawing references - remove workaround for mscorlib - use Type.GetMembers instead of .GetMethods - remove Glib.IdleHandler for simplicity - -2003-07-22 Mike Kestner <mkestner@speakeasy.net> - - * generator/Method.cs (GenerateBody): kill the "cast_type" - overload of this, since cast_type wasn't even used. - * generator/Property.cs : call simpler GenerateBody sig - -2003-07-22 Duncan Mak <duncan@ximian.com> - - * gtk/FileSelection.custom (FSButton): Mark the constructor as - 'internal', instead of 'public'. - -2003-07-15 Duncan Mak <duncan@ximian.com> - - * sources/makefile (get-source-code): make it go a bit faster by - checking out all files in one go. - - * gtk/IconSet.custom (Sizes): added proper binding to - gtk_icon_set_get_sizes (), this fixes bug #45835. - - * sources/Gtk.metadata - (GtkIconSet): hide the GetSizes method. - (GtkTextBuffer): new overrides - MoveMarkByName -> MoveMark - DeleteMarkByName -> DeleteMark - ApplyTagByName -> ApplyTag - RemoveTagByName -> RemoveTag - (GtkItemFactory): new overrides - GetItemByAction -> GetItem - GetWidgetByAction -> GetWidget - - These two changes fixes bug #46388. - - (GtkHTML): overrides for Begin, mark BeginContent and BeginFull as - overrides of Begin. This fixes bug #46427. - - * sources/gtkhtml-font-style-enum.patch: A patch to use real values - in gtkhtml-enums.h so that the parser won't choke on the complex enum - declarations. - - * sources/makefile: Apply the above patch after checking out the - source code for GtkHTML. - -2003-07-14 Mike Kestner <mkestner@speakeasy.net> - - * api/*-api.xml : regenerated - * gdk/Drawable.custom : DrawRectangle filled param is now bool - * generator/Parameters.cs : studlify names ending w/ uscore - * gtk/GtkSharp.GtkClipboardClearFuncNative : s/Opaque/Object - * gtk/GtkSharp.GtkClipboardGetFuncNative : s/Opaque/Object - * parser/gapi2xml.pl : put <ns>_string_* methods in Global - * sample/Scribble.cs : update to new DrawRectangle api - * sources/Gdk.metadata : hide some conflicting methods - * sources/Gtk.metadata : finally fix the Progress crap and - renames, hides and such to fix conflicts - * sources/README : mention new gtk-2.2 reqs - * sources/gtk-sharp.sources : update to new gtk-2.2 reqs - * sources/makefile : update for 2.2 api - -2003-07-12 Mike Kestner <mkestner@speakeasy.net> - - * api/gda-api.xml : hide the new Type class - * source/Gda.metadata : hide the new Type class - -2003-07-11 Mike Kestner <mkestner@speakeasy.net> - - * gdk/Selection.custom : add static fields for the primary, - secondary, and clipboard and clipboard selection Gdk.Atoms. - * glue/Makefile.am : add selection.c - * glue/selection.c : add glue to get the atoms. - * gtk/TextBuffer.custom : add a PasteClipboard overload for - pasting to the cursor location. - -2003-07-10 Mike Kestner <mkestner@speakeasy.net> - - * api/*-api.xml : regenerated - * gdk/Threads.cs : killed since the methods are now gen'd - * generator/ClassGen.cs : new, static class generatable - * generator/Parameters.cs : mangle new and byte as param names - * generator/Parser.cs : parse new <class> elements - * generator/SymbolTable.cs : add GC SimpleGen - * parser/gapi2xml.pl : static class element fixes - * parser/GAPI/Metadata.pm : add class element - * sources/Art.metadata: new, rename Affine.ToString method - * sources/Atk.metadata: rename State class - * sources/Gdk.metadata: hide Pixbuf static class for now. rename - Event and Pango static classes to avoid collisions. - * sources/Gnome.metadata: rename Gtk and Gdk static classes to - avoid collisions. - * sources/GnomeDb.metadata: rename Stock static class to - avoid collisions. - * sources/Gtk.metadata: rename Stock static class to - avoid collisions. Hide Idle class. - -2003-07-08 Ettore Perazzoli <ettore@ximian.com> - - * gtk/Layout.custom: New file, adding the Layout::BinWindow - property. - - * glue/layout.c: New file, adding glue for getting the bin_window - of a GtkLayout. - -2003-07-06 Mike Kestner <mkestner@speakeasy.net> - - * api/gtk-api.xml : regenerated - * parser/GAPI/Metadata.pm : add support for property - attribute alteration. - * sources/Gtk.metadata : rule to mark TextTag.Weight as - PangoWeight instead of gint. fixes 45214. - -2003-07-05 Mike Kestner <mkestner@speakeasy.net> - - * api/*-api.xml : regenerated - * parser/gapi2xml.pl : first pass at trying to expose - static classes for typeless method aggregation. - -2003-07-05 Mike Kestner <mkestner@speakeasy.net> - - * sources/makefile : fix the download uri's for the gnomedb - lib source. - -2003-07-04 Mike Kestner <mkestner@speakeasy.net> - - * api/*-api.xml : regenerated - * parser/gapi2xml.pl (addFuncElems): only ignore get_type - methods for enum types, so that we don't suppress some methods. - (addPropElem): remove doc-str since we don't autogen docs and - access types for enum/boxed/flags/obj as an offset from the end - of the param_spec to avoid problems with split(/,/). - -2003-07-04 Rodrigo Moya <rodrigo@ximian.com> - - * sources/makefile: updated download targets for libgda and - libgnomedb. - -2003-07-04 Rodrigo Moya <rodrigo@ximian.com> - - * sources/gtk-sharp.sources: - * api/gda-api.xml: - * api/gnomedb-api.xml: updated for libgda/libgnomedb 0.90. - -2003-07-05 Martin Willemoes Hansen <mwh@sysrq.dk> - - * glib/Object.cs: Changed getData, setData to a single Data property - Different keys are allowed now. - -2003-07-02 Shane Hyde <shane@enactive.org> - - * generator/GenBase.cs : put #line directive after the - #region so line numbers match up. - -2003-07-02 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs : remove doc comments - -2003-06-25 Martin Willemoes Hansen <mwh@sysrq.dk> - - * parser/gapi_pp.pl: Added striping of C comments - -2003-06-23 Martin Willemoes Hansen <mwh@sysrq.dk> - - * glib/Type.cs: Added ToString - -2003-06-14 Mike Kestner <mkestner@speakeasy.net> - - * configure.in : tagging for 0.10 - -2003-06-14 Mike Kestner <mkestner@speakeasy.net> - - * gtk/TreeViewColumn.custom : cast Array param to - object[] before indexing into it. - -2003-06-14 Mike Kestner <mkestner@speakeasy.net> - - * glib/Value.cs : cast uint to TypeFundamentals - -2003-06-14 Mike Kestner <mkestner@speakeasy.net> - - * CallbackGen.cs : rework for internal callback helpers, - pass NS to parms ctor - * Ctor.cs : pass NS to parms ctor - * Method.cs : pass NS to parms ctor - * Parameters.cs : refactoring, plus rework for internal - callback helpers. - * Signal.cs : pass NS to parms ctor - -2003-06-14 Mike Kestner <mkestner@speakeasy.net> - - * parser/gapi2xml.pl : some whitespace parsing cleanup - * api/*-api.xml : rerun of the parser. - -2003-06-12 Mike Kestner <mkestner@speakeasy.net> - - * generator/SimpleGen.cs : mark a few members virtual - since they are overridden elsewhere. - -2003-05-29 Rachel Hestilow <rachel@nullenvoid.com> - - * gconf/Value.cs: Update to use new string marshalling. - - * generator/StringGen.cs, ConstStringGen.cs: Added. - * generator/IGeneratable.cs: Add new method ToNativeReturn. - * generator/CallbackGen.cs: Implement ToNativeReturn. Call - ToNativeReturn for the return statement. Fix a couple of - places where s_ret was being used incorrectly for m_ret. - * generator/ClassGen.cs, EnumGen.cs, ManualGen.cs, - SimpleGen.cs, StructBase.cs: Implement ToNativeReturn. - * generator/SignalHandler.cs: Call ToNativeReturn for the - return statement, instead of CallByName. - * generator/SymbolTable.cs: Use StringGen for gchar, char, - and gunichar, and ConstStringGen for their const variants. - Add a new method wrapper for ToNativeReturn. - (Trim): Add a special-case for const strings so that the - const is not stripped. Otherwise there is no way of - resolving the const case. - - * glade/XML.custom: Update to use new string marshalling. - - * glib/Marshaller.cs: Added. - * glib/GException.cs, Markup.cs, ObjectManager.cs, - Value.cs: Update to use new string marshalling. - * glib/Object.cs: Remove old g_type_name DllImport - as it is no longer used. - - * glue/fileselection.c (gtksharp_file_selection_get_fileop_entry): - Mark this as const return. - - * gtk/ColorSelection.custom, FileSelection.custom, - SelectionData.custom: Update to use new string marshalling. - -2003-06-07 Martin Willemoes Hansen <mwh@sysrq.dk> - * generator/SymbolTable.cs: Added ulong - -2003-05-27 Rachel Hestilow <rachel@nullenvoid.com> - - * sample/ManagedTreeViewDemo.cs: Remove debugging cruft. - - * gconf/.cvsignore, gconf/GConf/.cvsignore, - gconf/GConf.PropertyEditors/.cvsignore, - gconf/tools/.cvsignore, sample/gconf/.cvsignore, - sample/rsvg/.cvsignore: Added. - * .cvsignore, parser/.cvsignore: Update. - -2003-05-27 Rachel Hestilow <rachel@nullenvoid.com> - - * gconf/GConf/ChangeSet.cs, Client.cs: Change SetValue - from protected to internal, as it references an internal type. - * gconf/GConf/ClientBase.cs: The same; additionally - remove some commented-out code. Change Initialize from - protected to internal. - -2003-05-22 Rachel Hestilow <rachel@nullenvoid.com> - - * glib/ManagedValue.cs, glib/Value.cs: A few old-style - DllImports snuck in during my last commit; update them - to use Win32 dll names. - -2003-04-28 Lee Mallabone <gnome@fonicmonkey.net> - - * sources/Gtk.metadata, api/gtk-api.xml: Unhide GtkSizeGroup - as it's a useful class. - -2003-05-19 Rachel Hestilow <rachel@nullenvoid.com> - - * glib/ManagedValue.cs, TypeConverter.cs: Added. - * glib/Value.cs: Make Value inherit from IDisposable, and - move dtor to Dispose. Add generic object constructor - with support for ManagedValue. Add a new Val property - which will call the appropriate explicit cast. - - * glue/value.c: Add new glue function - gtksharp_value_get_value_type. - - * gtk/TreeViewColumn.custom: Added. - * gtk/ListStore.custom, TreeStore.custom: Add a number - of SetValue overloads. Add convenience functtion - AppendValues. Add new ctor that takes System.Type instead - of GLib.TypeFundamentals. Add a GetValue convenience wrapper. - * gtk/TreeView.custom: Add AppendColumn convenience - functions. - - * sample/ManagedTreeViewDemo.cs: Added. - * sample/Makefile.in: Update. - * sample/TreeViewDemo.cs: Update to use new convenience - APIs. - -2003-05-18 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : use non-static symtab, kill doc comments - * generator/ClassBase.cs : use non-static symtab - * generator/CodeGenerator.cs : use non-static symtab - * generator/EnumGen.cs : kill doc comments, don't gen using System here - * generator/GenBase.cs : gen using System here for all types - * generator/InterfaceGen.cs : don't gen using System here. - * generator/Method.cs : use non-static symtab - * generator/ObjectGen.cs : kill doc comments, use non-static symtab - * generator/OpaqueGen.cs : don't gen using System here. - * generator/Parameters.cs : use non static symtab. - * generator/Parser.cs : use non static symtab. add SimpleGen's and - ManualGen's - * generator/Property.cs : use non static symtab - * generator/SignalHandler.cs : use non static symtab - * generator/StructBase.cs : use non static symtab - * generator/SymbolTable.cs : major refactoring. now uses SimpleGen and - ManualGen IGeneratables to simplify the method and prop code. Is now - instance based with a static prop to get the singleton instance, so that - a this indexer can be provided to access the IGeneratables nicely. Gearing - up to remove even more code from here by accessing IGeneratables directly. - -2003-05-18 Mike Kestner <mkestner@speakeasy.net> - - * generator/ClassBase.cs : Use QualifiedName in spew - * generator/ObjectGen.cs (Validate): kill, not used - -2003-05-13 Mike Kestner <mkestner@speakeasy.net> - - * COPYING : Add the license. This is copied verbatim from - http://www.gnu.org/licenses/lgpl.txt. - -2003-05-13 Mike Kestner <mkestner@speakeasy.net> - - * configure.in : bump the version to 0.10 - * generator/CallbackGen.cs (GenWrapper): Update sig preparing for - external assembly wrapper generation. Kill doc comment generation. - Make marshaling delegate internal. - -2003-05-07 Mike Kestner <mkestner@speakeasy.net> - - * generator/ClassBase.cs (GenSignals): remove doc comment param - * generator/GenBase.cs (CreateWriter): alter generated file comment - * generator/InterfaceGen.cs (CreateWriter): remove doc comments - * generator/ObjectGen.cs (Generate): use new GenSignals sig - * generator/Signal.cs : make signal marshalers internal and remove - doc comments. - * generator/SignalHandler.cs : make signal marshalers internal and remove - doc comments. - * gnome/CanvasProxy.cs : use Gnome.voidObjectSignal since the gtk one is - inaccessible now. - -2003-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * rsvg/Makefile.in: - * sample/rsvg/Makefile.in: hopefully fixes building from scratch. - - * rsvg/Tool.cs: the class should be public. - -2003-05-02 Alp Toker <alp@atoker.com> - - * sources/gtk-sharp.sources: - * api/glade-api.xml: - * glade/XML.custom: Use libglade-2.0-0.dll not glade-2.0 (for win32) - -2003-04-30 Mike Kestner <mkestner@speakeasy.net> - - * tagging for release 0.9 - -2003-04-28 Lee Mallabone <gnome@fonicmonkey.net> - - * api/gtk-api.xml, sources/Gtk.metadata: Add a rule to - hide classes/structs that are private in Gtk+. - -2003-04-28 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/Scribble.cs: patch from Philip Van Hoof - <spamfrommailing@freax.org> taht fixes compilation. - -2003-04-25 Charles Iliya Krempeaux <charles@reptile.ca> - * README : Updated to reflect the name change or the - "MonkeyGuide" to the "Mono Hand Book". Updated to - give the (new) correct chapter number for the - GNOME.NET section. Added mention of the - Gtk# Wiki. - -2003-04-25 Charles Iliya Krempeaux <charles@reptile.ca> - * gtk-sharp.pc.in, parser/gapi.pc.in : Both of these - files were checked in as empty files, before. Checked - them in, this time, with something in them. - -2003-04-16 Charles Iliya Krempeaux <charles@reptile.ca> - - * gdk/EventKey.custom : Created it so that there - is a "Key" property that returns a Gdk.Key. - -2003-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gtk/TreeView.custom: - (GetPathAtPos): added 3 overloads of this method so that the caller - does not need to create extra variables that may not use. - - * api/gtk-api.xml: - * sources/Gtk.metadata: added pass_out attribute for tx and ty - arguments of TreeView::WidgetToTreeCoords. Hide TreeView::GetPathAtPos. - -2003-04-14 Charles Iliya Krempeaux <charles@reptile.ca> - - * gtk-sharp.pc.in : Created to be used for the detection of - Gtk#. - * parser/gapi.pc.in : Created to be used for the detection - of gapi.pl. - * makefile : Deleted it. (Actually, renamed it to Makefile.in.) - * Makefile.in : Created it from the old makefile, and modified it - to account for gtk-sharp.pc. - * configure.in : Made it so it will generate gtk-sharp.pc - from gtk-sharp.pc.in, parser/gapi.pc from - parser/gapi.pc.in, and Makefile from Makefile.in. - * parser/Makefile.in : Modified it to account for parser/gapi.pc. - -2003-04-14 Lee Mallabone <gnome@fonicmonkey.net> - - * api/gtk-api.xml, sources/Gtk.metadata, gtk/ColorSelection.custom: - Fix up API in ColorSelection - Palette{From,To}String now work, and - PreviousColor is now a C# property. - - * api/gdk-api.xml, sources/Gdk.metadata, gdk/Color.custom: Hide the - Copy, Free and Hash methods in Gdk.Color and override GetHashCode(). - -2003-04-12 Alp Toker <alp@atoker.com> - - * parser/gen_keysyms: Generates a C# Key enum from the Gdk headers - (gdkkeysyms.h) - * gdk/Key.cs: The generated Key enum - -2003-04-09 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/Object.cs: - (GetObject): check that the target of the WeakReference is still there. Otherwise, - create a new wrapper for the IntPtr. - - This fixes the random nullrefs when running nunit-gtk. - -2003-04-03 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * generator/CallbackGen.cs: the new generated wrappers have: - -(optional) Field of the same type returned by the callback. - -A call to RemoveIfNotAlive at the beginning. It returns true, - return the dummy field. - -Added an object to the ctor signature and pass it to the base - class. - - * generator/Ctor.cs: added a Params property. - - * generator/Method.cs: set Static property in Parameters if the method - is static. - - * generator/Parameters.cs: added Static property. The call creation of - the delegate wrapper (if applicable) uses the new signature. Pass a null - as object is the method is static. - - * generator/StructBase.cs: set Static for the parameters of the ctors. - - * glib/DelegateWrapper.cs: the ctor takes an object (the one creating - the wrapper or null) and creates a weak reference to it. Store it in - a static Hashtable (this way the wrapper itself is not garbage - collected). - (RemoveIfNotAlive): called from the native delegate callbacks. If the - target of the weak reference has been garbage collected, removes itself - from the hashtable to let the GC dispose this instance and returns true. - - * gdk/Pixbuf.custom: - * gtk/Clipboard.custom: - * gtk/GtkSharp.GtkClipboardClearFuncNative.cs: - * gtk/GtkSharp.GtkClipboardGetFuncNative.cs: - * glade/XML.custom: changed delegate wrappers to match the new - signature. - -2003-04-04 Lee Mallabone <gnome@fonicmonkey.net> - - * gdk/Drawable.custom: - * sources/Gdk.metadata: - * api/gdk-api.xml: Apply a modified version of a patch from - Artemis <artemis@yandex.ru>, to fix and clean DrawPolygon and - DrawLines in Gdk.Drawable. - -2003-04-02 Charles Iliya Krempeaux <charles@reptile.ca> - * generator/SignalHandler.cs : Added Patch submitted by - Mark Crichton <crichton@gimp.org>, to get GtkMozEmbed - bindings working. - -2003-04-02 Lee Mallabone <gnome@fonicmonkey.net> - - * gtk/Entry.custom: Add a constructor that sets the initial contents. - - * sources/Gtk.metadata: - * api/gtk-api.xml: Fix API 'out' parameters in 'Frame' and some in 'Widget'. - -2003-03-27 Lee Mallabone <gnome@fonicmonkey.net> - - * api/gtk-api.xml, sources/Gtk.metadata, gtk/Viewport.custom: - Add default constructor to Viewport. - -2003-03-25 Lee Mallabone <gnome@fonicmonkey.net> - - * api/gtk-api.xml: Allow parameters in TreeView.ScrollToCell to be null. - * source/Gtk.Metadata: Mark TreeView.ScrollToCell() with some null_ok params. - -2003-03-25 Martin Baulig <martin@ximian.com> - - * gtk/Application.cs (CurrentEvent): Made this property static. - -2003-03-25 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/rsvg/Makefile.in: don't build the sample app. everytime. - -2003-03-25 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * api/gtk-api.xml: changed DisplayOptions by SetDisplayOptions. - * sources/Gtk.metadata: added rename hint for DisplayOptions. Moved - GtkHTMLStream hints to 'misc' area (they were in 'rename' area). - - * gtk/Calendar.custom: added a .net style GetDate override. - * sample/CalendarApp.cs: updated to new methods in the Calendar API. - -2003-03-23 Martin Baulig <martin@ximian.com> - - * glib/Object.cs (Dispose): Call `Objects.Remove (_obj)' here - instead of in PerformQueuedUnrefs(). - -2003-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/Fifteen.cs: work-around for bug 106145 in gnome bugzilla. - * sample/DbClient/client.cs: updated to make it compile again. - -2003-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glue/adjustment.c: - * glue/canvaspoints.c: - * glue/clipboard.c: - * glue/colorseldialog.c: - * glue/combo.c: - * glue/dialog.c: - * glue/error.c: - * glue/event.c: - * glue/fileselection.c: - * glue/list.c: - * glue/object.c: - * glue/paned.c: - * glue/program.c: - * glue/slist.c: - * glue/style.c: - * glue/type.c: - * glue/value.c: - * glue/widget.c: removed almost all the warnings. - -2003-03-22 Lee Mallabone <gnome@fonicmonkey.net> - - * sample/makefile.in: - * sample/CalendarApp.cs: Add a sample showing a Gtk.Calendar. - -2003-03-15 Duncan Mak <duncan@ximian.com> - - * gtk/ColorSelectionDialog.custom: Rename the inner Button class - to be ColorSelectionButton to avoid a name clash in the doc generator. - - * gtk/TextBuffer.custom: Fix the Text property. Patch from Mathias - Hasselmann <mathias.hasselmann@gmx.de>. - -2003-03-15 Miguel de Icaza <miguel@ximian.com> - - * sample: Update samples to new Glade.Widget. - - * glade/WidgetAttribute.cs: Moved the old GladeWidgetattribute - here. Now its called `Glade.WidgetAttribute'. - - * glade/GladeWidgetAttribute.cs: Removed - - * glib/Idle.cs: Do not allow Idle class to be instantiated. - -2003-03-11 Miguel de Icaza <miguel@ximian.com> - - * gtk/Application.cs (CurrentEvent): Property implementing the - suggestion from Paolo. - - * glib/Object.cs (Dispose): Destructor might be invoked in a - thread, queue the object for destruction using the Gtk idle - handler. We perform the real destruction of the object in the - same thread as the Gtk+ main thread. - -2003-03-14 Charles Iliya Krempeaux <charles@reptile.ca> - - * sources/makefile : Added a "distclean" rule, so - that typing it will remove any source code directories, - and their contents. (This works by just deleting all - the subdirectories. Except for "CVS" of course.) - -2003-03-14 Charles Iliya Krempeaux <charles@reptile.ca> - - * sample/Makefile.in : Modified it to make it so "make clean" - will clean the "sample/rsvg" directory too. And made it so - a "make distclean" will do a distclean to the "sample/rsvg" - too. - * sample/rsvg/Makefile.in : Added the "distclean" rule to - it. - -2003-03-14 Rodrigo Moya <rodrigo@ximian.com> - - * configure.in: - * sources/makefile: - * sources/gtk-sharp.sources: updated for libgda/libgnomedb 0.11. - - * sources/Gda.metadata: hide GdaBatch class. - -2003-03-13 Charles Iliya Krempeaux <charles@reptile.ca> - - * README : Did some spelling and grammar corrections. - Fixed indentation problem. And added some more info. - * HACKING: Added info for people getting started with - hacking Gtk#. - -2003-03-13 Duncan Mak <duncan@ximian.com> - - * gdk/Pixbuf.custom: Add a nice version of Gdk.Pixbuf.Pixels that - return a 'byte *'. - - * sources/Gdk.metadata: - * api/gdk-api.xml: Hide Gdk.Pixbuf.Pixels. - -2003-03-10 Miguel de Icaza <miguel@ximian.com> - - * gtk/Application.cs: Do not allow instances of Application to be - created. - - (InitCheck): new method, wraps gtk_init_check. - - Removed inline docs from here. Put them on the documen - -2003-03-08 Miguel de Icaza <miguel@ximian.com> - - * glib/Idle.cs: Add private constructor. - -2003-03-05 Miguel de Icaza <miguel@ximian.com> - - * gtk/Bin.cs: Add new property `Child' to GtkBin. - -2003-03-06 Mike Kestner <mkestner@speakeasy.net> - - * rsvg/Makefile.in : some -L -r magic - -2003-03-03 Miguel de Icaza <miguel@ximian.com> - - * gdk/Rectangle.custom: Add a Rectangle constructor that takes for - arguments. - -2003-03-02 Miguel de Icaza <miguel@ximian.com> - - * glib/Markup.cs: Add new file. - -2003-03-01 Peter Williams <peterw@ximian.com> - - * glue/Makefile.am (libgtksharpglue_la_LIBADD): Change this to - BASE_DEPENDENCIES_LIBS - -2003-03-01 Mike Kestner <mkestner@speakeasy.net> - - * api/gdk-api.xml : make Color.Parse retval a gboolean. Also change - some libname override rules to use win32 dllnames. - * sources/Gdk.metadata : rules for above. - -2003-03-01 Charles Iliya Krempeaux <charles@reptile.ca> - - * sources/README : Updated it to include mention of GStreamer - and librsvg. Also mentioned being able to use - "make get-source-code" to get the source code too. - Then added alot of content. And basically rewrote it. - -2003-02-28 Miguel de Icaza <miguel@ximian.com> - - * glue/widget.c (gtksharp_gtk_widget_get_window): Fix. Return the - window, not the address of the window pointer. - -2003-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * generator/SignalHandler.cs: the generated Dispose method now calls - base.Dispose and always disconnects the handler. Thanks to - Petr Danecek <danecek@ucl.cas.cz>. - -2003-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * api/gdk-api.xml: - * sources/Gdk.metadata: hide GdkColormap.AllocColor. - - * gdk/Colormap.custom: AllocColor is here. - - * gconf/tools/schemagen.cs: XmlDocument.Load (string) takes an Uri. - -2003-02-28 Miguel de Icaza <miguel@ximian.com> - - * gdk/Color.custom: Added constructors from System.Drawing.Color - and from rgb byte tuples. - - * gdk/Colormap.custom: Add new .custom file for the AllocColor - call. - - * sources/Gdk.metadata: Make Colormap.AllocColor GdkColor - parameter be a `ref' parameter. - -2003-02-27 Charles Iliya Krempeaux <charles@reptile.ca> - - * sample/rsvg : Created place to put sample program - that uses Rsvg#. - * sample/Makefile.in : Edited it to make it "make" - the stuff in "sample/rsvg". - * sample/rsvg/Makefile.in : Added it to "make" the - Rsvg# sample program. - * sample/rsvg/svghelloworld.cs : Added it. It's - the sample Rsvg# program. - * sample/rsvg/sample.cvs : Added it. It's a - sample SVG file that the program displays. - * configure.in : Modified it so it will create - sample/rsvg/Makefile from sample/rsvg/Makefile.in. - -2003-02-27 Charles Iliya Krempeaux <charles@reptile.ca> - - * sources/makefile : Updated the "make get-source-code" - functionality to create the Symbolic Links and get - gtkhtml from CVS, as specified by "sources/READDME". - -2003-02-27 Miguel de Icaza <miguel@ximian.com> - - * gdk/Drawable.custom: Added nice overload for DrawRectangle. - -2003-02-19 Miguel de Icaza <miguel@ximian.com> - - * gdk/Pixbuf.custom: Add overload arguments that take a - System.Drawing.Color. - - Added a Clone() method, to implement the ICloneable interface. - - Added constructors for inlined in-data RGB/RGBA buffers and file - images. - -2003-02-26 Charles Iliya Krempeaux <charles@reptile.ca> - - * gtk/TextBuffer.custom : Added method, named - "GetIterAtOffset" to wrap C API procedure - "gtk_text_buffer_get_iter_at_offset" in a - more expected way. - -2003-02-26 Charles Iliya Krempeaux <charles@reptile.ca> - - * configure.in : Added support for Rsvg.NET -- librsvg - .NET bindings. (Made a check for the library. And - made it so "rsvg/Makefile" would be generated. Also - made it so it will display if rsvg-sharp.dll will - be generated or not.) - * makefile : Added support for Rsvg.NET -- librsvg - .NET bindings. (Added an entry for Rsvg.NET.) - * sources/gtk-sharp.sources : Added an entry for - Rsvg.NET -- librsvg .NET bindings. - * rsvg/ : Created "rsvg/" directory. (To hold stuff - for Rsvg.NET.) - * rsvg/Tool.cs : Created Rsvg.Tool class to hold - various procedures (which were not automatically - wrapped). - * rsvg/Makefile.in : Created "rsvg/Makefile.in". - * api/Makefile.in : Added and entry for Rsvg.NET. - -2003-02-26 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * generator/Parser.cs: use XmlDocument.Load (Stream). The one using - (String) expects an uri. - - * generator/Signal.cs: always remove the delegate from the signal - callback (prior to this, the last handler was not being removed). - Dispose the callback (ie, disconnect from the signal) when there are - no registered delegates to handle it. - - * generator/SignalHandler.cs: added 2 new fields to hold the instance - and the handler ID. The finalization is now done in Dispose and - disconnects the signal handler when no delegate will handle the signal. - Changed gobject-2.0 to libgobject-2.0-0.dll. - - * glib/SignalCallback.cs: implemented IDisposable interface. - -2003-02-24 Mike Kestner <mkestner@speakeasy.net> - - * released 0.8 - -2003-02-24 Mike Kestner <mkestner@speakeasy.net> - - * sample/TreeViewDemo.cs : fix Type ambiguities - -2003-02-24 Mike Kestner <mkestner@speakeasy.net> - - * sample/Subclass.cs : rework the GType code. - -2003-02-24 Mike Kestner <mkestner@speakeasy.net> - - * generator/Parameters.cs : fix some ref/out bugs - -2003-02-24 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : gen GLib.Value ctor, not uint - * glib/Object.cs : use GLib.Type in RegisterGType and - make the g_object_new ctor use GLib.Type. - * glib/Type.cs : new thin wrapper for GValue type - * glib/*.cs : s/Type/System.Type - -2003-02-23 Mike Kestner <mkestner@speakeasy.net> - - * generator/GenBase.cs : quote the custom filenames in - #file directives. - -2003-02-23 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : suppress len params from - string/len pairs. - * generator/Parameters.cs : begin the refactoring to use - Parameter class. Suppress len params from string/len pairs. - */*.custom : remove all overrides of string/len pairs - */*.cs : ditto. Thanks to Alp Toker for the foundation - patch that this change was built upon. - -2003-02-22 Mike Kestner <mkestner@speakeasy.net> - - * sources/makefile : patch from Charles Krempeaux to add - get-source-code target which wgets tarballs. - -2003-02-21 Mike Kestner <mkestner@speakeasy.net> - - * mapdllnames.pl : a little whitespace action - * api/*-api.xml : move to win32 dllnames - * */makefile.win32 : remove the mapdllnames step - * */*.cs : move to win32 dllnames - * */*.custom : move to win32 dllnames - * sources/gtk-sharp.sources : move to win32 dllnames - -2003-02-21 Mike Kestner <mkestner@speakeasy.net> - - * api/*-api.xml : remove stray enum get_type methods. - * parser/gapi2xml.pl : ignore get_type methods on enums. - -2003-02-20 Mike Kestner <mkestner@speakeasy.net> - - * api/gtk-api.xml : hide the Arrow::Set method. - * sources/Gtk.metadata : metadata for above. - -2003-02-19 Mike Kestner <mkestner@speakeasy.net> - - * generator/Parameters.cs (Initialize): construct a GLib.Value - for out params. - -2003-02-19 Mike Kestner <mkestner@speakeasy.net> - - * api/gtk-api.xml : mark TreeModel::GetValue value param out - suggested by Lee Mallabone <gnome@phonicmonkey.net> - * sources/Gtk.metadata : metadata for above - * sources/README : update the gnomedb/gda version reqs - -2003-02-19 Duncan Mak <duncan@ximian.com> - - * sources/Gtk.metadata: Add GetLayoutOffsets to the rule for out params. - - * gtk/FileSelection.custom (Button): Rename to FSButton, so that - we won't wipe out our original Gtk.Button docs. - -2003-02-19 Mike Kestner <mkestner@speakeasy.net> - - * generator/GenBase.cs : mark #line 1 for .customs - * generator/SignalHandler.cs : fix for GObj retvals - -2003-02-18 Mark Crichton <crichton@gimp.org> - - * generator/EnumGen.cs: Handle different enum types. - -2003-02-14 Duncan Mak <duncan@ximian.com> - - * api/gtk-api.xml: - * sources/Gtk.metadata: Mark 'out' param in GetSelectionBounds, - thanks to Lee Mallabone for spotting that. - -2003-02-13 Mike Kestner <mkestner@speakeasy.net> - - * glib/Boxed.cs : fix a ctor bug reported to the list by - u900842@oz.nthu.edu.tw. - -2003-02-13 Mike Kestner <mkestner@speakeasy.net> - - * sample/Makefile.in: add a distclean target - -2003-02-13 Charles Iliya Krempeaux <charles@reptile.ca> - - * README : Clarifications and additions - -2003-02-13 Stefan Sarin <gprojects@saring.de> - - * gdk/Color.custom: fixed ToString (). - -2003-02-13 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * gconf/GConf/Client.cs: - * gconf/GConf/NoSuchKeyException.cs: added key string to the exception - when Get does not find it. - -2003-02-11 Duncan Mak <duncan@ximian.com> - - * gnome/voidObjectAffineSVPintSignal.cs: - * gnome/CanvasProxy.cs: Make the voidObjectAffineSVPintSignal - class be in the 'GtkSharp' namespace, instead of 'GtkSharp.Gnome'. - -2003-02-10 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glade/XML.custom: added a couple of checks for null. - -2003-02-09 Duncan Mak <duncan@ximian.com> - - * sources/Gtk.metadata: - * api/gtk-api.xml: Gtk.Editable.InsertText should have the - position be marked 'ref', not 'out', because it is an in-out parameter. - - * gtk/Entry.custom: Overload for InsertText. - * gtk/Clipboard.custom: New overload for SetText. - - * sources/Gtk.metadata: Mark out params for methods in GtkCalendar, - GtkCellRenderer, GtkWindow, GtkRuler, GtkLayout, GtkScrolledWindow - and GtkSpinButton. Monotalk is very useful for this kind of work. - -2003-02-08 Radek Doulik <rodo@ximian.com> - - * glib/MainContext.cs: beginning of MainContext class, just - Iteration and Pending methods to be able to refresh Gtk in the - middle of time consuming function where it's not worth while to - use threads - - * glue/style.c (gtksharp_gtk_style_get_font_description): new - function to access style's font_description field - - * gtk/Style.custom: added font description property - - * gconf/GConf/Client.cs: added SyggestSync method - -2003-02-07 Peter Williams <peterw@ximian.com> - - * glue/Makefile.am (libgtksharpglue_la_LIBADD): Set this so - that people linking to libgtksharpglue.so get their - dependencies. - - (I've had this patch sitting around forever, I think it got - approved, and it certainly appears correct.) - -2003-02-07 Martin Willemoes Hansen <mwh@sysrq.dk> - * Added a constructor to gdk/Point.custom - -2003-02-07 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/gconf/Makefile: defined top_builddir. RUNTIME is just 'mono'. - -2003-02-06 Duncan Mak <duncan@ximian.com> - - * sources/Gtk.metadata: Correct the metadata for the HTMLStream - Write method to make it always regenerate the correct - stuff. Thanks to Rachel for helping me out at the middle of the - night. - -2003-02-06 Duncan Mak <duncan@ximian.com> - - * api/gtk-api.xml: - * sources/Gtk.metadata: - * gtk/Window.custom: Mark out params in gtk_window_get_size and gtk_window_get_default_size. - -2003-02-06 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/SignalCallback.cs: new methods AddDelegate and RemoveDelegate. - - * generator/Signal.cs: add/remove signal handlers from the delegate used - to invoke them. - - * generator/SignalHandler.cs: use Delegate instead of MulticastDelegate. - -2003-02-05 Rodrigo Moya <rodrigo@ximian.com> - - * gda/Application.cs: - * gnomedb/Application.cs: synced version number with its corresponding - C library version. - -2003-01-29 Duncan Mak <duncan@ximian.com> - - * gtk/Widget.custom: Add a nice overload, rename it to - 'RequestSize' instead of 'SizeRequest' to avoid a name clash. - - * api/gtk-api.xml: - * sources/Gtk.metadata: out param for gtk_widget_get_size_request. - - * gtk/Window.custom: Add some overloads. - - * api/gtk-api.xml: - * sources/Gtk.metadata: - * sources/Pango.metadata: Add some more metadata rules. - -2003-01-28 Rodrigo Moya <rodrigo@ximian.com> - - * configure.in: - * api/gda-api.xml: - * api/gnomedb-api.xml: - * sources/gtk-sharp.sources: - * sources/Gda.metadata: added support for latest libgda/libgnomedb. - -2003-01-22 Radek Doulik <rodo@ximian.com> - - * sources/Gtk.metadata: disable default contructor for Frame in - metadata - - * parser/gapi2xml.pl: add comment to .xml files with warning that - they were auto generated - -2003-01-20 Mike Kestner <mkestner@speakeasy.net> - - * released 0.7. - -2003-01-12 Martin Baulig <martin@ximian.com> - - * parser/gapi2xml.pl (addNameElem): Make this work if the $cname - doesn't start with $prefix. - -2003-01-10 Duncan Mak <duncan@ximian.com> - - * gtk/TextView.custom (WindowToBufferCoords): Remove the hack, as - the generator produces correct code now. - - * sources/Gtk.metadata (GtkTextView): Add a patch from Fredrik - Nilsson <jymdman@home.se> to add needed 'out' parameters. - -2003-01-09 Rodrigo Moya <rodrigo@ximian.com> - - * makefile: - * configure.in: - * api/Makefile.in: - * api/gphoto-api.xml: - * sources/gtk-sharp.sources: - * gphoto/Makefile.in: - * gphoto/.cvsignore: removed gphoto2 bindings, to be moved to mphoto. - -2003-01-06 Pedro Abelleira Seco <pedroabelleira@yahoo.es> - - * pango/Layout.custom: Add Size get property and add some nicer overloads - to avoid explicit passing in the string length - -2003-01-05 Pedro Abelleira Seco <pedroabelleira@yahoo.es> - - * gdk/Drawable.custom: Add Size get property - -2003-01-05 Duncan Mak <duncan@ximian.com> - - * pango/GlyphString.custom: Add some nicer overloads to avoid - explicit passing in the string length. - -2003-01-05 Duncan Mak <duncan@ximian.com> - - * generator/GenBase.cs (AppendCustom): Add #region to code from - .custom files. - - * generator/*Gen.cs: Add #region markers. - -2003-01-05 Duncan Mak <duncan@ximian.com> - - * sources/Gtk.metadata (TextIter.ForwardSearch): Add out param - (TextIter.BackwardSearch): Add out param here too. - - * sources/Gdk.metadata (Drawable.GetSize): Add out param. - - * gtk/TextBuffer.custom (Clear): Add a new Clear method. - -2003-01-02 Alp Toker <alp@atoker.com> - - * api/gst-api.xml: Give int values to the ElementState enum, remove - incorrectly generated SetInternalConnectionFunction and a duplicated - type field - -2003-01-01 Alp Toker <alp@atoker.com> - - * glade/XML.custom: Determine name of GladeWidget if none specified - * glade/GladeWidgetAttribute.cs: ditto - -2003-01-01 Rachel Hestilow <hestilow@ximian.com> - - * glade/XML.custom: New method BindFields. - (Autoconnect): Call BindFields. - * glade/GladeWidgetAttribute.cs: Added. - - * sample/GladeTest.cs: Test GladeWidgetAttribute. - -2002-12-25 Rodrigo Moya <rodrigo@ximian.com> - - * sources/gtk-sharp.sources: added libgphoto2. - - * api/gphoto-api.xml: added API file for libgphoto2. - - * gphoto/Makefile.in: added Makefile for building libgphoto2 - bindings. - - * makefile: - * configure.in: - * api/Makefile.in: added libgphoto2 to build. - -2002-12-25 Alp Toker <alp@atoker.com> - - * doc/makefile: Accept the RUNTIME parameter for platforms without - /usr/bin/mono - * sample/gconf/Makefile: ditto - -2002-12-24 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : generate protected GType ctors - * generator/SymbolTable.cs : map GType to uint - * glib/Object.cs : add GType ctor. add RegisterGType. - * glue/type.c (gtksharp_register_type): new GType registrar - * */*.custom : make GType params uints - * sample/Subclass.cs : a simple type registration example - -2002-12-24 Alejandro Sánchez Acosta <raciel@gnome.org> - - * samples/tutorial/notebook: Added notebook sample. - -2002-12-23 Alp Toker <alp@atoker.com> - - * glib/Thread.cs: Add a class for thread awareness - * gdk/Threads.cs: ditto - -2002-12-22 Kristian Rietveld <kris@gtk.org> - - * sources/Gnome.metadata: add out param rules for a bunch of Canvas - methods (pointed out by Paul Duran). - - * api/gnome-xml.api: updated - -2002-12-22 Robert McQueen <robot101@debian.org> - - * makefile: when doing distclean, attempt distclean on all the - C# subdirs too - * gconf/Makefile.in: added distclean target to rm the Makefiles - in the subdirs of gconf/ - * glue/Makefile.am: build libgtksharpglue as an unversioned - module to avoid so -> so.0 -> so.0.0 symlink mess - * */Makefile.in: call mkinstalldirs before installing any files - so that subdirs can be installed seperately or in any sequence - (eg binding dirs before native dirs) - -2002-12-20 Alp Toker <alp@atoker.com> - - * api/gst-api.xml: Make Gst# link to libgstreamer.so as per pkg-config - --libs gstreamer - * sources/gtk-sharp.sources: ditto - * gst/Application.cs: ditto - * gst/Makefile.in: Reference the newly-built glib-sharp - -2002-12-15 Alejandro Sánchez Acosta <raciel@gnome.org> - - * sample/tutorial/spinbutton/SpinButton.cs: Added new SpinButton sample for the GTK# tutorial. - * sample/tutorial/Makefile: Added new SpinButton sample. - - -2002-12-15 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * api/gdk-api.xml: - * sources/Gdk.metadata: PixbufLoader.Pixbuf have to ref the new Pixbuf. - -2002-12-12 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/Log.cs: removed the IntPtr argument and keep a reference to - the delegate passed to unmanaged world as suggested by rachel. - -2002-12-11 Juli Mallett <jmallett@FreeBSD.org> - - * gconf/Makefile.in, sample/Makefile.in: Use $(MAKE) not "make." - * parser/Makefile.in: Use CFLAGS and CPPFLAGS hints from configure, - and the base dependency CFLAGS. Fixes case where iconv.h is outside - of the compiler's default path. - -2002-12-10 Mike Kestner <mkestner@speakeasy.net> - - * released 0.6. - -2002-12-10 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glib/Log.cs: New file. Wraps a few logging functions. Useful for - debugging. - -2002-12-10 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * generator/Signal.cs: generate correct type name for EventArgs. - -2002-11-29 Duncan Mak <duncan@ximian.com> - - * gtk/TextBuffer.custom (Text): Add a new Text property. - -2002-11-26 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/DbClient/GnomeDbClient.cs: - * sample/DbClient/client.cs: make them build. - -2002-11-25 Alejandro Sánchez Acosta <raciel@es.gnu.org> - - * Added eventbox, rangewidget, scribble and packing sample widget. - * Changed togglebutton sample. - -2002-11-21 Mike Kestner <mkestner@speakeasy.net> - - * api/*.xml : a few new attrs - * generator/Parameters.cs : remove redundant ref keywords - * gtk/ListStore.custom: overload SetColumnTypes - * gtk/TreeStore.custom: overload SetColumnTypes - * parser/GAPI/Metadata.pm : allow callback nodes at class level - * sources/Gtk.metadata : hide ClipboardClearFunc and GetFunc, - tag types param of SetColumnTypes as array, uncomment needs_ref - tags on Widget methods to match the current api.xml file - -2002-11-19 Mike Kestner <mkestner@speakeasy.net> - - * gtk/Dialog.custom : bind another ctor - -2002-11-17 Radek Doulik <rodo@ximian.com> - - * glib/Value.cs: cast Typefundamentals.* to uint (GType is - unsigned int), fix Value (GLib.Object) - use new GetGType method - - * glib/Object.cs: new GetGType method, returns _obj GType - -2002-11-17 Daniel Morgan <danmorg@sc.rr.com> - - * pango/Scale.cs: added file containing constants - for text widgets needing Pango Scale Attribute - -2002-11-13 Vladimir Vukicevic <vladimir@pobox.com> - - * gtk/CanvasItem.custom: use base() to set Raw in constructor, so - that the ref counting semantics get correctly set up - -2002-11-10 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * glade/XML.custom: converted from Latin1 to UTF8 to make the generator - go on. - -2002-11-10 Vladimir Vukicevic <vladimir@pobox.com> - - * glib/Object.cs: add needs_ref boolean that controls whether - we need to ref this object once we have a pointer to it or not. - By default this is set to true -- constructors and other functions - where we do own the object need to set this to false before setting - the "Raw" property. Also added Unref and RefCount methods. - - * glue/object.c, glue/type.c: some utility functions for - refcounting support - - * gdk/Pixbuf.custom: manually wrap a few functions so that - the refcount ends up being correct at the end (need an extra Unref) - - * api/gdk-api.xml, sources/Gdk.metadata: metadata updates for - hiding manually-wrapped Pixbuf stuff - -2002-11-10 Vladimir Vukicevic <vladimir@pobox.com> - - * generator/StructBase.cs: create a Zero static member for - use when the IntPtr is NULL. - - * generator/SignalHandler.cs, generator/CallbackGen.cs: removed - call to Initialize for structs - - * gtk/Clipboard.custom, gtk/ClipboardClearFunc.cs, - gtk/ClipboardGetFunc.cs, - gtk/GtkSharp.GtkClipboardClearFuncNative.cs, - gtk/GtkSharp.ClipboardGetFuncNative.cs, SelectionData.custom: - Hand-wrapped selection handling stuff, along with relevant - signals and the like. - - * gnome/voidObjectAffineSVPintSignal.cs: removed Initialize - for hand-wrapped signal - - * sample/GnomeHelloWorld.cs, sample/Size.cs: compare against - .Zero instead of using IsNull - - * api/gtk-api.xml, sources/Gtk.metadata: metadata updates for - hiding some manually-wrapped stuff - -2002-11-10 Alejandro Sánchez Acosta <raciel@es.gnu.org> - - * sample/tutorial: added some examples for the gtk# tutorial - -2002-11-06 Duncan Mak <duncan@ximian.com> - - * sample/Scribble.cs: Make it compile. - -2002-11-06 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * autogen.sh: - * configure.in: added configuration summary. - -2002-11-03 Alp Toker <alp@atoker.com> - - * sources/gtk-sharp.sources: Update to support GStreamer 0.4.2 - * api/gst-api.xml : ditto - * gst/Application.cs : ditto - -2002-11-01 Alp Toker <alp@atoker.com> - - * configure.in : Add GStreamer support - * api/Makefile.in : ditto - * api/gst-api.xml : ditto - * sources/gtk-sharp.sources: ditto - * gst/Makefile.in : ditto - * gst/Application.cs : Gst initialization - * sample/GstPlayer.cs : An example which uses the Gst binding - * generator/Parameters.cs : Add 'fixed' keyword to name mangler - * generator/StructBase.cs : ditto - * generator/Parameters.cs : Fix Initialize() for set accessors - * generator/Ctor.cs : ditto - * generator/Method.cs : ditto - * generator/SymbolTable.cs : Add gint64, guint64 to simple types - -2002-10-29 Mike Kestner <mkestner@speakeasy.net> - - * generator/Signal.cs : Fix namespacing of Args. - -2002-10-27 Mike Kestner <mkestner@speakeasy.net> - - * configure.in : bump version to 0.6. - -2002-10-26 Mike Kestner <mkestner@speakeasy.net> - - * gconf/GConf.PropertyEditors/PropertyEditorColorPicker.cs : ns stuff - * glade/XML.custom : more GnomeSharp namespace stuff - * gnome/CanvasProxy.cs : ditto - * sample/CanvasExample.cs : ditto - * sample/Fifteen.cs : ditto - * sample/GnomeHelloWorld.cs : ditto - -2002-10-26 Mike Kestner <mkestner@speakeasy.net> - - Much of this patch from Vlad, with substantial rework by mk. - * */makefile.win32 : introduce mapdllnames.pl, api, and glue - * generator/CallbackGen.cs : rework namespacing for csc compilation - * generator/Parameters.cs : ditto - * generator/Signal.cs : ditto - * generator/SignalHandler.cs : ditto - * glue/win32dll.c : new dll construction source - * glib/Value.cs : new ushort ctor/cast operator - * gtk/Table.custom : comment this out until we add a default ctor tag - * gtk/ThreadNotify.cs : make ReadyEvent public - * sources/Gdk.metadata : mark a Parse() param as ref - -2002-10-26 Ettore Perazzoli <ettore@ximian.com> - - * glib/Object.cs: Changed so that Objects is a hash of - WeakReferences instead of hashing the real objects. Without this - change, GObjects were never collected. - (Raw, set): Put a WeakReference to the object in Objects. - (Object.GetObject): Get the WeakReference from Objects, and from - there the actual object. - (Object.DisposeNative): Remove the Raw pointer from Objects. - -2002-10-26 Mike Kestner <mkestner@speakeasy.net> - - * api/*.xml : get libgda and libgnomedb metadata setup - * gconf/*/Makefile.in : patch from MauricioC for -L's and /r's - * gnomedb/Makefile.in : patch from MauricioC for -L's and /r's - * generator/ClassBase.cs (ctor): mangle hash names for sigs and props - * generator/Parameters.cs (MangleName): handle params, null, and ref - * generator/Parser.cs (ParseNamespace): ignore "hidden" types - * generator/StructBase.cs (MangleName): handle params, null, and ref - * glib/Object.cs (Equals): kill, also kill == and != - * sources/Gda.metadata : new, make Gda behave without hand edits - * sources/GnomeDb.metadata : ditto - -2002-10-21 Vladimir Vukicevic <vladimir@pobox.com> - - * glade/XML.custom: add SetCustomHandler() wrapper - -2002-10-20 Miguel de Icaza <miguel@ximian.com> - - * glib/Object.cs: Avoid recursive calls with the previous operator - != and operator == - -2002-10-19 Duncan Mak <duncan@ximian.com> - - * glib/Source.cs: Added. - -2002-10-19 Miguel de Icaza <miguel@ximian.com> - - * glib/Object.cs: Added operator != and operator == overloads. - -2002-10-19 Rachel Hestilow <hestilow@ximian.com> - - * gconf, sample/gconf: Added. - - * glue/combo.c: This was never added, add it now. - - * configure.in, makefile, sample/Makefile.in: Build new - gconf bindings if gnome is enabled. - -2002-10-14 Mike Kestner <mkestner@speakeasy.net> - - * glib/Object.cs (GetObject): remove (int) cast - -2002-10-11 Martin Baulig <martin@gnome.org> - - * gtk/Combo.custom: New file. - (Combo.SetPopdownStrings): New method to set the popdown strings - from a string array. - -2002-10-11 Martin Baulig <martin@gnome.org> - - * glib/ListBase.cs (ListBase.Append): New public method. - (ListBase.Prepend): New public method. - -2002-10-11 Martin Baulig <martin@gnome.org> - - * glib/FileUtils.cs: New file. Wrapped g_file_get_contents() here. - -2002-10-10 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : some fixes - * generator/Parameters.cs (CreateSignature): handle void params - -2002-10-10 Miguel de Icaza <miguel@ximian.com> - - * gtk/ThreadNotify.cs: Avoid multiple notifications. - -2002-10-09 Miguel de Icaza <miguel@ximian.com> - - * glue/adjustment.c (gtksharp_gtk_adjustment_get_page_size): Added - the glue. - - * gtk/Adjustment.custom: Added some more methods - -2002-10-08 Kristian Rietveld <kris@gtk.org> - - (So Miguel told me just to go ahead and commit -kris) - - * gtk/TreeSelection.custom: new file, defines a working - GetSelected method (GetSelected is a bit tricky function). - - * generator/InterfaceGen.cs (Generate): also call AppendCustom - - * sources/Gtk.metadata: hide the autogenerated - Gtk.TreeSelection.GetSelected method. - -2002-10-08 Miguel de Icaza <miguel@ximian.com> - - * gdk/Point.custom: Use (x,y) instead. - - * gdk/Color.custom: Use the X rgb color format specification. - - * gdk/Rectangle.custom: Use the X geometry format for Rectangles. - -2002-10-07 Vladimir Vukicevic <vladimir@pobox.com> - - * glue/style.c, gtk/Style.custom: handle - getting GC's and colors correctly -- it's not possible - to marshal arrays from C-land to mono correctly, - so indexed accessors have to be used. - -2002-10-08 Duncan Mak <duncan@ximian.com> - - * gdk/Color.custom: - * gdk/DeviceAxis.custom: - * gdk/Point.custom: - * gdk/Rectangle.custom: Committed ToString patches contributed by - Jasper van Putten <Jaspervp@gmx.net> - -2002-10-05 Vladimir Vukicevic <vladimir@pobox.com> - - * glib/GException.cs: g_clear_error takes - a GError **, not a GError *. Added refs to get the **. - -2002-10-04 Vladimir Vukicevic <vladimir@pobox.com> - - * glib/ObjectManager.cs, glue/type.c: If there isn't - an exact match for a C GObject class (i.e. BluecurveStyle), - walk up the gobject type hierarchy until we find a type - that we do have a wrapper for, and return that. This means - that you'll always, worst-case, end up with a GObject. - - * glib/Value.cs, glue/value.c: Added default constructor - to GLib.Value() that creates a new value with a type of - INVALID, and changed the glue function to not call - gtk_type_init if INVALID is passed. - -2002-10-02 Vladimir Vukicevic <vladimir@pobox.com> - - * gtk/TreeView.custom: added TreeView Handle as argument - to set_model in Model property - -2002-09-29 Rachel Hestilow <hestilow@ximian.com> - - * glue/canvas-proxy.c (update), glue/canvas-proxy-marshal.list: - Marshal the array as a pointer for now. - - * gnome/voidObjectAffineSVPintSignal.cs: Added. - * gnome/CanvasProxy.cs (Update): Use a custom signal handler. - -2002-09-23 Miguel de Icaza <miguel@ximian.com> - - * gtk/Style.custom: bind it. - - * gtk/Widget.custom: bind it. - - * glue/widget.c: Wrapper to fetch a GdkWindow from a widget. - - * glue/style.c: wrapper routines for getting/setting the thickness - on a GtkStyle. - -2002-09-21 Miguel de Icaza <miguel@ximian.com> - - * gtk/TreeView.custom: Add Model.set to the TreeView - -2002-09-21 Rachel Hestilow <hestilow@ximian.com> - - * parser/gapi2xml.pl: Adjust enum regex to allow negative values. - -2002-09-16 Martin Baulig <martin@gnome.org> - - * gnome/Modules.cs (Module): Make this class public. - - * sample/CanvasExample.cs: Insert a missing `break' in a switch - section to make this compile. - - * sample/Scribble.cs: Added missing casts from EventMask to int. - -2002-09-15 Ricardo Fernandez Pascual <ric@users.sourceforge.net> - - * glade/XML.custom: Added a constructor to read the glade file - from a stream and to read it from a resource in an assembly. - * sample/Makefile.in - * sample/GladeTest.cs: Embed the glade file as a resource and use - the new constructor. - -2002-09-13 Ricardo Fernandez Pascual <ric@users.sourceforge.net> - - * glade/HandlerNotFoundExeception.cs: Added. - * glade/Makefile.in - * glade/XML.custom: Support for autoconnecting signals using - reflection. - * glib/SignalAttribute.cs: Added. - * generator/Signal.cs: Mark events generated from glib signals - with the "Signal" attribute. - * sample/GladeTest.cs - * sample/Makefile.in - * sample/test.glade: Test of signal autoconnection. - -2002-09-12 Rachel Hestilow <hestilow@ximian.com> - - * sources/Gtk.metadata: Set null_ok on the callback argument - to Menu.Popup. - - * generator/Parameters.cs: Handle null_ok properly for callback - arguments. - -2002-09-11 Miguel de Icaza <miguel@ximian.com> - - * glib/Object.cs (DisposeNative): Call GC.SuppressFinalize, and - set the obj to null. - -2002-09-11 Rachel Hestilow <hestilow@ximian.com> - - * glib/Object.cs (Ref): Added. - - * gtk/Object.custom (Ref): Overload. Note that we were reffed. - (DisposeNative): Unref if we were explicitly reffed. - - * generator/Method.cs: Call Ref if needs_ret is set. - * generator/StructBase.cs: Call Ref on all object accessors. - - * glue/style.c: Ref returned GCs. - - * sources/Gtk.metadata: Set needs_ret on various gdk-related - accessors in GtkWidget. Hide Ref/Unref methods on Widget and - RcStyle as these ought to be deprecated anyway. - -2002-09-11 Rodrigo Moya <rodrigo@gnome-db.org> - - * gnomedb/Makefile.in: - * gnomedb/Application.cs: added class for libgnomedb initialization. - - * sample/DbClient/GnomeDbClient.cs: new test file for libgnomedb. - -2002-09-08 Rodrigo Moya <rodrigo@gnome-db.org> - - * makefile: - * configure.in: - * sources/gtk-sharp.sources: added needed stuff for libgnomedb. - - * gnomedb/Makefile.in: - * api/Makefile.in: - * api/gnomedb-api.xml: new files for libgnomedb API. - -2002-09-07 Rachel Hestilow <hestilow@ximian.com> - - * parser/gapi2xml.pl: Add support for "fake struct" opaque types. - * generator/StructBase.cs: Generate wrapper fields for opaque - fields as well as pointer fields. - * api/gdk-symbols.xml: Remove GdkAtom as it is now wrapped. - -2002-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/DbClient/client.cs: updated to make it compile. - -2002-09-04 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : generate dtors. - * glib/Object.cs : Implement IDisposable. Add a new DisposeNative - method. Implement default dtor. - * glue/object.c : new gtksharp_object_unref_if_floating method. - * gtk/Object.custom : override DisposeNative to check float bit. - -2002-09-03 Juli Mallett <jmallett@FreeBSD.org> - - * parser/Makefile.in: Use $(CC) instead of 'cc'. - -2002-09-01 Rodrigo Moya <rodrigo@ximian.com> - - * gda/Application.cs: new class for libgda initialization and event - loop management. - - * gda/Makefile.in: added new file as a dependency. - -2002-09-01 Gonzalo Paniagua Javier <gonzalo@gnome-db.org> - - * glib/ListBase.cs: fixed compilation (the base class must be at least - as accesible as the derived ones). - -2002-08-31 Rodrigo Moya <rodrigo@ximian.com> - - * api/gda-api.xml: new file for the libgda API. - - * gda/*: added libgda bindings. - - * sources/README: updated requirements. - -2002-08-31 Rachel Hestilow <hestilow@ximian.com> - - Proper GList, GSList support. Read-only for now. - - * glue/list.c: Added. - * glue/Makefile.am: Add list.c - * glue/type.c: Add function gtksharp_is_object. - - * glib/ListBase.cs, List.cs: Added. - * glib/SList.cs: Inherit from ListBase. - * glib/Object.cs: Add static method "IsObject". - - * generator/Method.cs: Pass on element_type to constructor - if specified. - * generator/SymbolTable.cs: Move GList to manual types. - - * sample/GladeViewer.cs: Remove list hacks. - - * sources/Gnome.metadata: Specify element types for - CanvasPathDef.Split and IconList.GetSelection. Rename - CanvasPathDef *to methods to properly capitalized *To. - * sources/Gtk.metadata: Hide Widget.ListAccelClosures until - GClosure is handled properly. - * sources/Pango.metadata: Added. - - * sample/test/TestToolbar.cs: Compile with recent delegate changes. - -2002-08-31 Rachel Hestilow <hestilow@ximian.com> - - * glib/Idle.cs: Added. - * gtk/Application.cs: Add EventsPending, RunIteration. - - * sample/TreeViewDemo.cs: Add a status dialog while - populating tree. - -2002-08-31 Rachel Hestilow <hestilow@ximian.com> - - * generator/Method.cs: Re-enable "if null then new" behavior - for Opaques. - -2002-08-29 Rachel Hestilow <hestilow@ximian.com> - - * glib/DelegateWrapper.cs: Forgot to add this. - -2002-08-28 Rachel Hestilow <hestilow@ximian.com> - - * generator/CallbackGen.cs: Generate wrappers to map - from managed delegates to native ones. - * generator/Ctor.cs: Call parms.Initialize for the static case. - * generator/Parameters.cs: Add "CType" property. Append [] - to CSType if necessary. Add "HideData" property if a container - wishes to hide the user_data (used in callbacks). - (Initialize): Add case for callback. - * generator/SymbolTable.cs: Add size_t. - - * glue/program.c: string[] marshalling is no longer broken, - remove hack. - - * sources/Gtk.metadata: Disable - GtkColorSelection.SetChangePaletteHook and - GtkTreeView.GetSearchEqualFunc for now, they return delegates and - we don't support native->managed delegate mapping yet. - -2002-08-28 Joe Shaw <joe@assbarn.com> - - * makefile: Add the art directory back in; fixes the build. - -2002-08-26 Rachel Hestilow <hestilow@ximian.com> - - * sources/Gtk.metadata: Add null-ok for Menu.Popup. - -2002-08-25 Juli Mallett <jmallett@FreeBSD.org> - - * makefile: Fix recursive invocation of make(1) to use - the variable MAKE, to use the same utility that was - responsible for the invocation of the initial build. - -2002-08-25 Miguel de Icaza <miguel@ximian.com> - - * gtk/TextBuffer.custom: Added SetText with a single argumnet. - - * gtk/Table.custom: Added empty constructor. GtkTables - automatically grow. - -2002-08-23 Rachel Hestilow <hestilow@ximian.com> - - * glue/Makefile.am: Fix # terminators. - -2002-08-23 Rachel Hestilow <hestilow@ximian.com> - - * Applied patch from Robot101 for maintainer-clean, etc. - Needed for packaging. - -2002-08-20 Rachel Hestilow <hestilow@ximian.com> - - * generator/SymbolTable.cs (Trim): Work around "void*". - Libart has a lovely API... - -2002-08-22 Mike Kestner <mkestner@speakeasy.net> - - * glib/IWrapper.cs : remove set_Handle - * glib/Object.cs : ditto - * glib/Opaque.cs : ditto - -2002-08-22 Mike Kestner <mkestner@speakeasy.net> - - * glib/Makefile.in : rm -rf generated on make clean target - * gnome/CanvasProxy.cs : add missing Signals hash. - -2002-08-20 Rachel Hestilow <hestilow@ximian.com> - - Ditto for generator and api. - -2002-08-20 Rachel Hestilow <hestilow@ximian.com> - - * parser/makefile: Rename to Makefile.in, change prefix to @prefix@. - * configure.in: generate parser/Makefile. - -2002-08-20 Rachel Hestilow <hestilow@ximian.com> - - * makefile: Add parser to build (for install only) - * parser/makefile: Add distclean target. - - * parser/gapi.pl: Forgot to add this. - * api/: Replace APIs with correctly generated ones. - -2002-08-20 Rachel Hestilow <hestilow@ximian.com> - - * README.generator: Added docs on using the generator. - -2002-08-19 Rachel Hestilow <hestilow@ximian.com> - - * art/Makefile.in (clean): Change to avoid bugging out on generated/CVS. - - * glib/ObjectManager.cs: Added. Used to be auto-generated, but - now it can infer names, and relies on per-namespace ObjectManager - classes to inform it of oddly-named classes. - - * generator/IGeneratable.cs, GenBase.cs: New "DoGenerate" property. - * generator/*Gen.cs: Honor DoGenerate. - * generator/CodeGenerator.cs: Support including dependency files - which will not be generated. - * generator/ObjectGen.cs: Generate mapping file per-namespace, as one - that calls back to the one in glib. Only generate if the name does - not follow the normal conventions, otherwise, GtkSharp.ObjectManager - can infer the name. - * generator/Parser.cs: Accept 'generate' flag to pass on to the - IGeneratables. Parse a new toplevel element, "symbol", which adds - a type to the SymbolTable (instead of hard-coding it). - * generator/SignalHandler.cs: Do not optimize signal handler creation, - instead creating them in their own namespaces. Do not generate - if the calling Signal told us not to. - * generator/Signal.cs: Do not generate handlers if container's DoGenerate - is false. Adjust to the marshaller name being in a sub-namespace. - * generator/SymbolTable.cs (AddSimpleType, AddManualType): Used - to add simple and manually wrapped types at runtime instead of - compile-time. - (FromNative): Remove hard-coded cases for manually wrapped types, use - a generic case instead. - - * api: Added. Move api files and generation targets here. - * source: Added. Move source parsing here. - - * generator/makefile: Move actual generation to api/. - * glib/Makefile.in: Remove generated/* target. - * glue/Makefile.am: Fix to include canvas-marshal. Move canvas stuff - to GNOME target. - - * gnome/CanvasProxy.cs: Update to work with SignalHandlers being - namespace-specific. - - * parser/Metadata.pm: Moved to GAPI/Metadata.pm, renamed, etc. - * parser/gapi2xml.pl: Use GAPI::Metadata. - * parser/makefile: Install scripts, remove source parse build target. - Rename formatXML to gapi_format_xml. - -2002-08-17 Miguel de Icaza <miguel@ximian.com> - - * gtk/ThreadNotify.cs: New file, used to notify invoke code in the - main Gtk thread. - -2002-08-17 Duncan Mak <duncan@ximian.com> - - * gnome/CanvasProxy.cs: - * gnome/GtkSharp.BoundsHandler.cs: - * gnome/GtkSharp.DrawHandler.cs: - * gnome/GtkSharp.PointHandler.cs: - * gnome/GtkSharp.RenderHandler.cs: - * gnome/GtkSharp.UpdateHandler.cs: C# glue for subclassing CanvasItems. - - * glue/canvas-proxy-marshal.c: - * glue/canvas-proxy-marshal.h: - * glue/canvas-proxy-marshal.list: - * glue/canvas-proxy.c: Added the coverage signal. - -2002-08-17 Duncan Mak <duncan@ximian.com> - - * glue/canvas-proxy.c: - * glue/canvas-proxy.h: New files. Glue for subclassing CanvasItem - from C#. - - * glue/canvas-proxy-marshal.c: - * glue/canvas-proxy-marshal.h: - * glue/canvas-proxy-marshal.list: Added to handle marshaling - signals used by CanvasProxy. - -2002-08-15 Mike Kestner <mkestner@speakeasy.net> - - * sample/Makefile.in : add some art-sharp refs - -2002-08-11 Miguel de Icaza <miguel@ximian.com> - - * glub/adjustment.c: C-side of the Adjustment glue. - - * gtk/Adjustment.custom: Add new SetBounds function that allows us - to change the adjustment after it has been created. - -2002-08-15 Duncan Mak <duncan@ximian.com> - - * generator/gtkapi.xml: New Libart stuff. - - * parser/build.pl: - * gnome/Makefile.in: Added reference to atk-sharp.dll - - * generator/Parameters.cs (MangleName): Added cases for 'in' and 'out'. - -2002-08-13 Joe Shaw <joe@assbarn.com> - - * configure.in: Check for libgnomecanvas. - - * gtk/ColorSelectionDialog.custom: Create a button subclass which - contains a reference to the parent ColorSelectionDialog. Modify - properties to return this subclass instead of a regular - Gtk.Button. - - * gtk/FileSelection.custom: Ditto. - - * sample/test/TestFileSelection.cs (file_selection_ok): - Demonstrate the button subclass by destroying the parent dialog - when the ok button is clicked. - -2002-08-12 Rachel Hestilow <hestilow@ximian.com> - - [ Patch from Ricardo Fernandez Pascual <rfp1@ono.com> for - libglade support (slightly modified) ] - - * configure.in: Conditionally compile glade support. - * makefile: Add glade directory. - * glade/: Added. - * sample/makefile.in: Add (conditional) glade example. - * sample/GladeViewer.cs: Added. - * glue/gladexml.c: Added. - * glue/Makefile.am: Updated. - - * parser/build.pl: Parse libglade-2.0.0. - * parser/README: Update requirements. - -2002-08-12 Rachel Hestilow <hestilow@ximian.com> - - * parser/gapi_pp.pl: Handle "typedef struct {...}" construct. - - * glue/canvaspoints.c: Added. - * glue/Makefile.am: Updated. - - * gnome/CanvasPoints.custom: Added. (Doesn't seem to work right yet, - looking into this.) - -2002-08-10 Rachel Hestilow <hestilow@ximian.com> - - * sample/TreeViewDemo.cs (Main, DeleteCB): Update to use correct - event handler. - -2002-08-09 Kristian Rietveld <kris@gtk.org> - - * parser/Gtk.metadata: add a bunch of out arg rules, add - a vararg rule for the ListStore constructor, change method names of - TreeModel's signal emission methods, remove opaque rule of - GtkTreeIter, remove null_ok rules of TreeModel.IterNChildren - and TreeModel.IterNthChild. - - * parser/Metadata.pm: add some code to be able to filter on - parameter names. - - * generator/Method.cs: a method with accessor args and a non-void - return value cannot be written as property. - - * sample/Makefile.in, sample/TreeViewDemo.cs: add a simple TreeView - demo app. - - * gtk/ListStore.custom, gtk/TreeModel.custom, gtk/TreeModelSort.custom, - gtk/TreeStore.custom, gtk/TreeView.custom: customizations. - -2002-08-09 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs (GenerateMapper): guard against IntPtr.Zero - -2002-08-09 Duncan Mak <duncan@ximian.com> - - * sample/Fifteen.cs (Position): Made it a property instead of a - public field. - - * sample/pixmaps/gnome-color-browser.png: Icon for Fifteen#. - -2002-08-09 Mike Kestner <mkestner@speakeasy.net> - - * generator/SymbolTable.cs : make GLib.Value a manually_wrapped_type - -2002-08-08 Mike Kestner <mkestner@speakeasy.net> - - * generator/Property.cs : getter usage fix - -2002-08-08 Mike Kestner <mkestner@speakeasy.net> - - * generator/Method.cs : s/GetType/GetGType. Don't generated static - methods for interfaces. - * glib/Object.cs : add GType prop - * gnome/*.custom : s/Type/GType - * parser/Gtk.metadata : rule to make TreeIter opaque - * parser/gapi2xml.pl : handle interface methods properly - * sample/Fifteen.cs : s/Type/GType - -2002-08-08 Mike Kestner <mkestner@speakeasy.net> - - * gdk/Event.cs : derived from Boxed, not Object. - * generator/SymbolTable.cs : fixes for Gdk.Events - -2002-08-07 Mike Kestner <mkestner@speakeasy.net> - - * generator/CodeGenerator.cs : call ObjectGen.GenerateMapper - * generator/Method.cs : Remove the if null workaround - * generator/ObjectGen.cs : build a hash of object types. - (GenerateMapper): generate the GtkSharp.ObjectManager class. - * glib/Object.cs : use ObjectManager.CreateObject. - * glue/type.c : helper for typename lookup. - -2002-08-07 Duncan Mak <duncan@ximian.com> - - * sample/Fifteen.cs: Fixed scramble. The whole thing works now. - -2002-08-06 Rachel Hestilow <hestilow@ximian.com> - - * generator/SignalHandler.cs: Handle null arguments and return values. - - * sample/Makefile.in: Add fifteen game. - -2002-08-06 Gonzalo Paniagua Javier <gonzalo@ximian.com> - - * sample/GnomeHelloWorld.cs: use DeleteEventHandler. - -2002-08-07 Duncan Mak <duncan@ximian.com> - - * sample/Fifteen.cs: Fixed movement logic. It works now. Added - 'debug' flag. Run 'mono ./Fifteen.exe debug' to see movement info. - -2002-08-07 Duncan Mak <duncan@ximian.com> - - * sample/Fifteen.cs: Added new canvas example. - -2002-08-06 Duncan Mak <duncan@ximian.com> - - * glue/canvasitem.c: - * gnome/CanvasItem.custom: Added accessor to get the 'canvas' field. - - * sample/CanvasExample.cs: Removed extra methods. - -2002-08-05 Rachel Hestilow <hestilow@ximian.com> - - * makefile, */Makefile.in: Packaging fix from - Robert McQueen (a.k.a. Robot101). - -2002-08-05 Rachel Hestilow <hestilow@ximian.com> - - * gnome/Canvas*.custom, IconTextItem.custom: Added. - - * sample/CanvasExample.cs: Added. - * sample/Makefile.in: Build canvas example in gnome build. - -2002-08-05 Rachel Hestilow <hestilow@ximian.com> - - * parser/Gnome.metadata: Patch from duncan for - bug #28553 (canvas item event handler rename). - -2002-08-04 Joe Shaw <joe@assbarn.com> - - * configure.in: We actually need libgnomeui, not libgnome. - -2002-08-04 Mike Kestner <mkestner@speakeasy.net> - - Tagged for 0.3 and updated configure.in to 0.4. - Back open for commits. - -2002-08-03 Mike Kestner <mkestner@speakeasy.net> - - Freezing cvs for 0.3 release. Please no commits until the release. - -2002-08-03 Mike Kestner <mkestner@speakeasy.net> - - * generator/Method.cs : Added IsGetter, IsSetter, ReturnType. Made - GenerateImport, GenerateBody public. - * generator/Parameters.cs : Added Parameter::MarshalType - * generator/Property.cs : Added logic to use methods instead of text - properties wherever possible. - -2002-08-03 Rachel Hestilow <hestilow@ximian.com> - - * generator/Method.cs: Support libname overrides. Call parms.Finish. - * generator/Parameters.cs: New method parms.Finish. Generate a temporary - holder variable for enum out parameters. - * generator/Property.cs: Pass a boolean to EnumWrapper indicating. - if these are flags. - * generator/StructBase.cs: Disable array marshalling (it is - broken in mono.) - * generator/SymbolTable.cs: Add methods IsEnumFlags. - - * glib/EnumWrapper.cs: New bool "flags". - * glib/Value.cs: Call flags variant on GValue for enum props, if needed. - - * glue/Makefile.am, glue/style.c, glue/widget.c: Add widget - and style field accessor methods. - - * gtk/Style.custom, Widget.custom: Added. - - * parser/README: Update requirements (needed for pixbuf drawable hack) - * parser/Gdk.metadata: Fix library for pixbuf methods in gdk. - Add Window.GetPointer "out" parameters. - * parser/gapi2xml.pl: Remap gdk_draw_* methods to Drawable. - - * sample/Makefile.in: Add size and scribble samples. - * sample/Scribble.cs: Added. - -2002-08-02 Rachel Hestilow <hestilow@ximian.com> - - [ Mike, this is everything I wanted in for the release. ] - - * generator/StructBase.cs: Generate field accessors for wrapped - types (opaque, object, and structs/boxed). Bitfields, unions, and - arrays are still unsupported for accessors, and are probably marshalling - incorrectly. But this is enough to get events working (see example - in sample/GnomeHelloWorld.cs). - - * parser/Metadata.pm: Support a "delete" directive, and set metadata - on structs and boxed (previously was only checking objects and interfaces). - - * parser/Gdk.metadata: Delete bogus entries GdkWindowObject and - GdkPixmapObject (more evil drawable stuff.) - - * sample/GnomeHelloWorld.cs: Show an example of how to use marshalled - events, in our selection callback. - -2002-07-31 Rachel Hestilow <hestilow@ximian.com> - - * generator/StructBase.cs (GetFieldInfo): Generate strings correctly. - Also, delegates are not marshalling correctly right now, change those - to IntPtr. - - * generator/SymbolTable.cs: New method IsCallback. - - * sample/GnomeHelloWorld.cs: Use Gnome.App and stock menu items. - Use the new event handlers. - -2002-07-30 Rachel Hestilow <hestilow@ximian.com> - - * generator/ClassBase.cs: Change hasDefaultConstructor to protected, - adjust now that it is an attr and not a subnode. Also add virtual - property AssignToName (for ctors). - - * generator/Ctor.cs: Add property ForceStatic. - (Generate): Optimize return code a bit for the static case. - - * generator/Method.cs: Assign to a "raw_ret" pointer before calling - FromNativeReturn. - - * generator/Parameters.cs: Change "out ref" to "out", not "ref". - - * generator/Property.cs: Fix to work correctly with all object and - struct types (mostly just some if-cases added). - - * generator/SignalHandler.cs: Remove args_type and argfields (unused). - (Generate): Initialize struct if necessary. - - * generator/StructBase.cs: Massive reworking to support methods, ctors, - etc. - - * generator/SymbolTable.cs: Add GdkAtom and gconstpointer simple types. - - * glib/Boxed.cs: Accept both IntPtr and object ctors. Add access for both. - - * glib/Opaque.cs: Fix copy/pasted copyright notice, remove data and event - fields. Fix docs. - - * glib/Value.cs: Work correctly with boxed properties. - - * gnome/Modules.cs: Use new struct ctors. - - * gnome/Program.custom: Remove Get, this is being generated now. - - * parser/Gdk.metadata: Fix the drawable classes to inherit correctly. - - * parser/Metadata.pm: Change per-class attributes to actually be - attributes. - - * parser/Gtk.metadata: Add a dummy attribute value for disabledefaultctor. - - * parser/gapi2xml.pl: Add hacks for the (broken) Drawable and Bitmap - typedefs. - - * sample/test/TestColorSelection.cs: Display color string in hex format, - update to use IsNull instead of == null, and size dialog to look pretty. - - * sample/Size.cs: Added. - -2002-07-25 Rachel Hestilow <hestilow@ximian.com> - - [about 60% of the marshalling patch that I lost. - The rest to come tomorrow.] - - * generator/BoxedGen.cs, StructGen.cs: Move most of this to StructBase, - delete large chunks duplicated from ClassBase. - - * generator/IGeneratable.cs: Add MarshalReturnType, FromNativeReturn. - - * generator/ClassBase.cs: Move ctor stuff here. Add a CallByName - overload with no parameters for the "self" reference. - - * generator/EnumGen.cs, CallbackGen.cs: Implement new MarshalReturnType, - FromNativeReturn. - - * generator/Method.cs: Use container_type.MarshalType, CallByName, and - SymbolTable.FromNativeReturn when generating call and import sigs. - - * generator/OpaqueGen.cs: Added. - - * generator/Property.cs: Handle boxed and opaques differently. - - * generator/SymbolTable.cs: Update for the opaque stuff and the new Return - methods. Also change GetClassGen to simply call the as operator. - - * glib/Boxed.cs: Update for struct usage -- this is now a wrapper for - the purposes of using with Value. - - * glib/Opaque.cs: Added. New base class for opaque structs. - - * glue/textiter.c, gtk/TextIter.custom: Remove. - - * gnome/Program.cs: Update for new struct marshalling. - - * parser/Metadata.pm: Use our own getChildrenByTagName. - - * parser/README: Update for new requirements (was out of sync with - build.pl) - - * parser/gapi2xml.pl: Hide struct like const in field elements. - - * parser/gapi_pp.pl: Handle embedded union fields (poorly). - - * sample/test/TestColorSelection.cs: Comment out null color tests - for now. - -2002-07-24 Mike Kestner <mkestner@speakeasy.net> - - * generator/SignalHandler.cs : use ref parameters in signal cb's. - -2002-07-24 Alp Toker <alp@atoker.com> - - * gtk/Makefile.in etc. : reference the newly compiled assemblies - instead of those already installed on the system - -2002-07-23 Mike Kestner <mkestner@speakeasy.net> - - * generator/Method.cs : implement static method generation. - * parser/Gnome.metadata : map AppBar::ClearPrompt signal collision. - * parser/Gtk.metadata : map IMContext::DeleteSurrounding collision. - * parser/gapi2xml.pl : mark shared methods in the XML. - -2002-07-20 Mike Kestner <mkestner@speakeasy.net> - - * generator/SignalHandler.cs : pring unexpected key in exception. - -2002-07-20 Mike Kestner <mkestner@speakeasy.net> - - * generator/Method.cs : beef up !Validate warnings - * generator/ObjectGen.cs : beef up !Validate warnings - * generator/Parameters.cs (Validate): fail on ellipsis parm - * parser/gapi2xml.pl : Handle more opaque types properly - -2002-07-19 Duncan Mak <duncan@ximian.com> - - * gtk/Paned.custom: - * glue/paned.c: Glue code for getting child1 and child2 out from a Gtk.Paned. - - * glue/Makefile.am: Add paned.c - -2002-07-19 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructGen.cs : comment out GenField. It's broke. - * sample/ButtonApp.cs : revert the EventAny WriteLine. - -2002-07-19 Mike Kestner <mkestner@speakeasy.net> - - * parser/gapi2xml.pl : mark privately defined structs opaque. - -2002-07-18 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs : use GetMarshalType for field gen. - * sample/ButtonApp.cs : WriteLine the Gdk.EventAny in DeleteEvent. - -2002-07-18 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructGen.cs : make them public structs, not classes. - * parser/build.pl : step up to the g2final tarballs. - * parser/gapi2xml.pl : suppress *Private struct types. Mark - ellipsis terminated param lists. - -2002-07-18 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs : Mangle field names. - * generator/StructGen.cs : uncomment GenField. - -2002-07-18 Duncan Mak <duncan@ximian.com> - - * parser/Gtk.metadata: Mark gtk_radio_menu_item_new_with_label, - gtk_radio_button_new_with_label, gtk_radio_button_new and - gtk_radio_button_new_with_mnemonic with null_ok flags. - -2002-07-17 Radek Doulik <rodo@ximian.com> - - * gtk/ScrolledWindow.custom: new file with ScrolledWindow custom - default constructor - use this (null, null) - - * parser/Metadata.pm: addClassData subroutine to add - <disabledefaultconstructor/> - - * parser/Gtk.metadata: disable default constructor for - ScrolledWindow - - * generator/ObjectGen.cs: added hasDefaultConstructor flag, dont - generate default protected empty constructor if - hasDefaultConstructor is false, it will be provided by .custom - file - - * generator/makefile (RUNTIME): use RUNTIME variable - -2002-07-17 Rachel Hestilow <hestilow@ximian.com> - - * parser/Gtk.metadata: Tag MenuItem.SetSubmenu as null-ok. - -2002-07-17 Rachel Hestilow <hestilow@ximian.com> - - * generator/Method.cs: Honor array in return type. - - * parser/Gtk.metadata: Tag FileSelection.GetSelections as array. - * parser/Metadata.pm: Add "return" target. - - * parser/gtkhtml, parser/README: Add gtkhtml-stream.[ch]. - Needed for url-requested signal. The actual wrapper for this - compiles but is badly borked, it will probably need a lot of love. - -2002-07-16 Mike Kestner <mkestner@speakeasy.net> - - * generator/ClassBase.cs : make MarshalType virtual. - * generator/Parameters.cs : add Parameter class and Indexer. - * generator/Signal.cs : Now use Parameters. - (GetHandlerName): New abstraction of name handling. - (GenerateDecls): use GetHandlerName. - (GenComments): make private. - (GenHandler): New. Generate custom event handlers and args. - (Generate): use GenHandler. Pass args type to SignalHandler. - * generate/SignalHandler.cs : store args type. Generate handler - dependent args and use MulticastDelegate.DynamicInvoke. - * generate/StructGen.cs : override MarshalType. - * glib/SignalCallback.cs : store a MulticastDelegate and args type - * sample/*.cs : use new DeleteEventHandler - -2002-07-13 Rachel Hestilow <hestilow@ximian.com> - - * generator/Parameters.cs: Allow nulls if null_ok set. - * generator/SymbolTable.cs: Add method IsStruct. - * parser/Gtk.metadata, Gdk.metadata, Gnome.metadata: Merge in - null_ok from *.defs. This is probably incomplete though, I've - already found one method that wasn't listed. - - * sample/GnomeHelloWorld.cs: Remove IntPtr.Zero hack. - -2002-07-13 Rachel Hestilow <hestilow@ximian.com> - - * parser/Gnome.metadata, Gtk.metadata: More conflict - fixes. - * parser/build.pl: Fully qualify all lib names. (Gtk+ packages - are now LFS-compliant in Debian...) - * parser/gapi2xml.pl: Fix for whitespace in fields, defines, - and docs. - - * generator/BoxedGen.cs: Remove extraneous CallByName definition, - add "override" keyword to FromNative. - (Generate): Generate methods after fields. - * generator/ClassBase.cs: Change CallByName, FromNative to virtual. - (.ctor): Ignore "hidden" nodes. Set container on signal. - (GenSignals, GenMethods): Add "implementor" argument for interface - use. - (Get(Method|Signal|Property)Recursively): Rework to correctly - recurse interfaces. - (Implements): Added. - * generator/Ctor.cs (Initialize): Move clash initialization completely - out of Generate, so we can check for collisions. - * generator/Method.cs (GenerateDeclCommon): Check for duplicates, - for "new" keyword. - (Generate): Add "implementor" argument. - * generator/ObjectGen.cs (Generate): Initialize ctor clashes on - this and all parents, before generating. - (Ctors, InitializeCtors): Added. - * generator/Signal.cs: Store the container_type, check for - collisions. - * generator/StructGen.cs: Add "override" keyword to overriden methods. - - * gtk/FileSelection.custom (ActionArea): Add "new" keyword. - -2002-07-11 Mike Kestner <mkestner@speakeasy.net> - - * glib/SList.cs : fix a couple DllImports - -2002-07-11 Duncan Mak <duncan@ximian.com> - - * glue/Makefile.am: Added dialog.c and colorseldialog.c - - * glue/dialog.c: - * gtk/Dialog.custom: C# glue for getting more fields from a GtkDialog. - - * glue/colorseldialog.c: - * gtk/ColorSelectionDialog.custom: C# glue for getting more fields - from a ColorSelectionDialog. - -2002-07-09 Mike Kestner <mkestner@speakeasy.net> - - * generator/ClassBase.cs : handle overloaded method hash collision - * generator/SignalHandler.cs : generate *Handler delegates. stub *Args - * parser/Gtk.metadata : add *Defaults method renaming - -2002-07-08 Mike Kestner <mkestner@speakeasy.net> - - * glue/Makefile.in : s/BASE_SOURCES/BASESOURCES - * parser/gapi_pp.pl : handle nested #if/#endif in ignored #if's - * parser/makefile : make gtkapi.xml depend on gapi*.pl - -2002-07-06 Rachel Hestilow <hestilow@ximian.com> - - * generator/Parameters.cs (Initialize): Initialize error - to zero. - -2002-07-06 Rachel Hestilow <hestilow@ximian.com> - - * ObjectGen.cs: Support static string elements. Do - not generate Ctors or Signals if it is not a GObject. - - * parser/gapi2xml.pl: Add stock defines. - -2002-07-05 Rachel Hestilow <hestilow@ximian.com> - - * glue/Makefile.am: Make this work cleanly, with all automake. - -2002-07-05 Rachel Hestilow <hestilow@ximian.com> - - * configure.in: Conditionally compile Gnome. - - * parser/gapi_pp.pl: Handle line breaks in function declarations. - * parser/gapi2xml.pl: Handle non-literals in property definitions. - - * glue/program.c: Added. - * glue/Makefile.am: Add program.c (conditionally compiled). - Update INCLUDES. - - * gnome/Makefile.in: Conditionally compile this. - * gnome/Program.custom, Modules.cs: Added. - - * samples/Makefile.in: Conditionally compile gnome example. - * samples/GnomeHelloWorld.cs: Use Gnome.Program. - -2002-07-01 Rachel Hestilow <hestilow@ximian.com> - - * generator/gtkapi.xml: - * parser/build.pl: Fix to use 3.0 (accidentally reverted in - last commit). - - * generator/SymbolTable.cs (simple_types): Map gssize and gsize. - * parser/Gdk.metadata: Tag PixbufLoader.Write's data parameter - as array. - -2002-07-01 Rachel Hestilow <hestilow@ximian.com> - - * generator/gtkapi.xml: - * parser/build.pl: Qualify gnome lib names; this is needed - because of debian/LSB policy. - -2002-06-26 Duncan Mak <duncan@ximian.com> - - * generator/gtkapi.xml: - * parser/build.pl: Point to 'gtkhtml-3.0' instead of gtkhtml-2. - -2002-06-26 Rachel Hestilow <hestilow@ximian.com> - - * generator/*.cs: Deal with whitespace XmlNodes. - - * parser/build.pl: Dump non-indented file to local directory. - - * parser/makefile, parser/formatXml.c: Added. - - * generator/gtkapi.xml: Nicely indented now. woo! - -2002-06-26 Rachel Hestilow <hestilow@ximian.com> - - * parser/Gtk.metadata: Change gtk_label_new to be the - preferred constructor. - - * gdk/Event.cs: Add "IsValid" property (sometimes NULL events - get sent in signals). - - * sample/GnomeHelloWorld.cs: Check to make sure iconlist event - is valid. - -2002-06-26 Rachel Hestilow <hestilow@ximian.com> - - * configure.in, makefile, makefile.win32: add gnome. - - * doc/index.html, netdoc.xsl: Add gnome. - - * gdk/Event.cs: New manual wrap for GdkEvent. - - * generator/ClassBase.cs: Add methods GetProperty, - GetPropertyRecursively, GetMethodRecursively. - Move Parent property here from ObjectGen.cs. Pass this pointer - into Property. - - * generator/Ctor.cs: Generate docs. - - * generator/Method.cs, Property.cs: Tag method as "new" if a - Method/Property with the same name is found in the class hierarchy. - - * generator/SignalHandler.cs: Correctly wrap complex signal argument - types. Add gnome directory. - - * generator/SymbolTable.cs: Add manually wrapped types hash - (contains GLib.GSList and Gdk.Event). Add method IsManuallyWrapped. - - * glib/SList.cs: Add constructor from IntPtr. - - * glue/slist.c, glue/event.c: Added (field accessor glue). - - * glue/Makefile.am: Update. - - * parser/Gtk.metadata: Add new signal renames for new signals - exposed by GdkEvent changes. - - * parser/README, parser/build.pl: Add libgnome, libgnomecanvas, - libgnomeui. - - * parser/gapi2xml.pl: Handle literal-length array parameters, - and NULL property doc strings. - - * sample/: Add new test GnomeHelloWorld.cs. - - * gnome/: Added. - - * parser/Gnome.metadata: Added. - -2002-06-25 Mike Kestner <mkestner@speakeasy.net> - - * generator/gtkapi.xml : lots of fixes, plus GtkHTML! - * parser/Gtk.metadata : add a bunch of renames. - * parser/build.pl : Add the gtkhtml parse. - * parser/README : module list to parse - -2002-06-25 Mike Kestner <mkestner@speakeasy.net> - - * parser/gapi2xml.pl : some GtkHTML related parsing tweaks. - -2002-06-25 Rachel Hestilow <hestilow@ximian.com> - - * makefile: back out a premature add of gnome - -2002-06-25 Rachel Hestilow <hestilow@ximian.com> - - * doc/: Added the makeshift doc generation toolchain. - -2002-06-25 Mike Kestner <mkestner@speakeasy.net> - - * configure.in : back out a premature add of gnome/Makefile.in - -2002-06-24 Rachel Hestilow <hestilow@ximian.com> - - * glib/UnwrappedObject.cs: New class which holds an IntPtr. - This is used in Value so that we can retrieve the IntPtr itself - for an object property. - - * glib/Value.cs: Add UnwrappedObject cast operator. - - * glib/Property.cs: If the retrieved value is an object, - and there is no wrapper object, create a new one. - -2002-06-24 Rachel Hestilow <hestilow@ximian.com> - - * gtk/FileSelection.custom: Remove random cruft that was - at the beginning of this file. - -2002-06-24 Rachel Hestilow <hestilow@ximian.com> - - * glib/EnumWrapper.cs: New class which holds an enum int. - - * glib/Value.cs: Add support for glib enum types. We needed - to use EnumWrapper for this because otherwise the int operator - wouldn't know which glib function to use. - - * generator/BoxedGen.cs, ClassBase.cs, Ctor.cs, EnumGen.cs, - InterfaceGen.cs, Method.cs, ObjectGen.cs, Signal.cs, StructGen.cs: - Create more doc stubs. - - * generator/Property.cs: Generate enum values correctly. - - * generator/Ctor.cs: Refactor generation to honor metadata-specified - collision preference. - - * parser/Gtk.metadata: Added constructor collision preferences to - all known clashes. - - * parse/Gdk.metadata: Added (for Pixbuf clashes). - -2002-06-24 Duncan Mak <duncan@ximian.com> - - * glue/fileselection.c: New file, defines accessor functions to - fields inside a GtkFileSelection. - - * gtk/FileSelection.custom: C# glue that makes use of new accessor - functions defined in fileselection.c. - - * glue/Makefile.am: Added fileselection.c - -2002-06-23 Rachel Hestilow <hestilow@ximian.com> - - * glib/Object.cs, glib/SList.cs, glib/Value.cs, gtk/Application.cs: - Move documentation to right before their actual methods, rather - than the DllImported ones. - - * generator/Method.cs: Generate documentation before the actual - method and not the DllImport. - -2002-06-23 Rachel Hestilow <hestilow@ximian.com> - - * generator/ClassBase.cs: Add accessors for methods and signals. - Change GenSignals and GenMethods to public, as csc has a different - idea of protected than mcs. Handle interface collisions in - GenMethods. - - * generator/Method.cs: Add accessor Protection - "public" by default. - - * generator/ObjectGen.cs: Make sure wrapper's Signals hashtable only - gets generated once. Generate a list of collisions for GenMethods. - Remove dead foreach loop from Validate. - - * generator/Paramaters.cs (CreateSignature): Initialize last_param. - - * parser/Gtk.metadata: Add property & event collision renames - for TextBuffer and OldEditable. - - * sample/makefile.win32: Reference atk-sharp.dll. - - * makefile.win32: Do not build gdk.imaging. - -2002-06-22 Mike Kestner <mkestner@speakeasy.net> - - * */makefile.win32 : add docs target - * generator/ClassBase.cs : Make GenMethods public for interface gen - * generator/Method.cs : Lose the CallingConvention - * generator/Parameters.cs : fix uninitialized var - * generator/SignalHandler.cs : Lose the CallingConvention - * generator/StructBase.cs : Lose the CallingConvention - -2002-06-21 Michael Meeks <michael@ximian.com> - - * sample/Makefile.in: re-factor slightly. - -2002-06-21 Mike Kestner <mkestner@speakeasy.net> - - * gtk/*akefile* : lose the gdk-imaging-sharp refs - -2002-06-21 Mike Kestner <mkestner@speakeasy.net> - - * configure.in : remove gdk.imaging/Makefile creation. - -2002-06-21 Mike Kestner <mkestner@speakeasy.net> - - * makefile : remove gdk.imaging from the build - * gdk.imaging/* : kill - * generated/BoxedGen.cs : XmlNode namespace handling. Use GenBase. - * generated/CallbackGen.cs : XmlNode namespace handling. - * generated/Ctor.cs : construct with libname not ns. - * generated/EnumGen.cs : XmlNode namespace handling. - * generated/GenBase.cs : XmlNode namespace handling. Make AppendCustom - an instance method so it can use the private fields instead of params. - * generated/InterfaceGen.cs : XmlNode namespace handling. - * generated/Method.cs : construct with libname not ns. - * generated/ObjectGen.cs : XmlNode namespace handling. - * generated/Parser.cs : Use new XmlNode namespace ctors. - * generated/Signal.cs : Lose the namespace field. - * generated/StructBase.cs : derive from ClassBase - * generated/StructGen.cs : XmlNode namespace handling. Use GenBase. - * generated/SymbolTable.cs : nuke GetDllName method. - * generator/gtkapi.xml : Add library name to namespace node. - * parser/build.pl : refactor for library name param - * parser/gapi2xml.pl : add libname param handling - * sample/Makefile.in : build linux on make install, but don't install. - -2002-06-21 Rachel Hestilow <hestilow@ximian.com> - - * generator/ClassBase.cs: New base class for classes and interfaces. - - * generator/InterfaceGen.cs: Inherit from ClassBase, generate declarations. - - * generator/ObjectGen.cs: Move half of this into ClassBase. - - * generator/Method.cs: Turn all applicable Get/Set functions into .NET - accessors. Remove redundant == overload and move into Equals, as - it was confusing "!= null". - - * generator/Parameters.cs: Alter signature creation to accept "is_set" - option, add support for variable arguments. Add properties "Count", - "IsVarArgs", "VAType". - - * generator/Ctor.cs: Fixup for changes in Parameters (indenting, - signature creation). - - * generator/Signal.cs: Support generating declarations. - - * generator/SymbolTable: Change GetObjectGen to GetClassGen. - - * glib/IWrapper.cs: Move "Handle" declaration to here, so - both classes and interfaces can benefit from it. - - * glib/Object.cs: Inherit from IWrapper.cs - - * parser/Metadata.pm: Support attribute changes on constructors, - methods, signals, and paramater lists. - - * parser/gapi2xml.pl: Parse init funcs for interfaces. Ignore "_" - functions here. - - * parser/gapi_pp.pl: Remove boxed_type_register check, as it will - be caught in the init funcs. - - * parser/Atk.metadata: Added. - - * parser/Gtk.metadata: Add all needed signal/method collision - renames. Rename GtkEditable.Editable accessors to IsEditable, - as .NET does not like accessors with the same name as their - declaring type. Tag TreeStore constructor as varargs. - - * samples/ButtonApp.cs: s/EmitAdd/Add. - - * samples/Menu.cs: s/EmitAdd/Add, s/Activate/Activated. - -2002-06-21 Mike Kestner <mkestner@speakeasy.net> - - * */makefile.win32 : add /doc flags - * */.cvsignore : ignore .xml files - -2002-06-21 Mike Kestner <mkestner@speakeasy.net> - - * gdk.imaging/Makefile.in : add a missing -L - * gtk/Makefile.in : add a missing -L - * generator/Method.cs : Add some docs stubbage - -2002-06-20 Mike Kestner <mkestner@speakeasy.net> - - * generator/Parameters.cs : GError handling overhaul - * generator/SymbolTable.cs : map GError to IntPtr - * glib/GException.cs : Refactor to use glue. - * glue/Makefile.am : add the error.c file. - * glue/error.c : glue for error message string access - * gtk/makefile.win32 : ref the gdk-imaging-sharp assembly - -2002-06-19 Mike Kestner <mkestner@speakeasy.net> - - * generator/Parameters.cs : csc build error fixes - -2002-06-14 Rachel Hestilow <hestilow@ximian.com> - - * glib/GException.cs: Added. - - * generator/Ctor.cs, Method.cs: Tag function as unsafe if it throws - an exception. Call parms.HandleException. - - * generator/Paramaters.cs: Add property ThrowsException (based - on a trailing GError**). If ThrowsException, mask GError in the - signature, initialize a GError in Initialize, and add new method - HandleException to throw an exception if error != null. - - * generator/SymbolTable.cs: Add gdk-pixbuf DLL, and GError type. - - * gdk.imaging, gdk.imaging/Makefile.in, gdk.imaging/makefile.win32: - Added. - - * configure.in, Makefile, makefile.win32: Build gdk.imaging. - - * gtk/Makefile.in, gtk/makefile.win32: Link against gdk.imaging. - - * parser/gapi2xml.pl: Support namespace renaming. - - * parser/build.pl: Build gdk-pixbuf as gdk.imaging. - -2002-06-09 Rachel Hestilow <hestilow@ximian.com> - - * generator/GenBase.cs: new method AppendCustom, moved from ObjectGen. - * generator/BoxedGen.cs, ObjectGen.cs, StructGen.cs: - Call AppendCustom in Generate (); - * generator/Method.cs, Parameters.cs: Add support for "out" - parameters. Additionally, output an accessor instead of a - regular method if it is an accessor-style function (ie GetStartIter). - * generator/Property.cs: Add additional cast to Boxed, if necessary. - * glue/textiter.c: New constructor for GtkTextIter. - * glue/Makefile.am: Add textiter.c, build with Gtk+ cflags. - * configure.in: Check for Gtk+ cflags. - * parser/Metadata.pm, Gtk.metadata: Added. - * parser/gapi2xml.pl: Call Metadata::fixup on the document. - Also work around gtk's screwy boxed type name registration - (GtkFoo -> GtkTypeFoo). - * gtk/TextIter.custom: Added. - -2002-06-06 Mike Kestner <mkestner@speakeasy.net> - - * glib/Timeout.cs : new Timeout class with Add() and - TimeoutHandler delegate. - -2002-06-05 Mike Kestner <mkestner@speakeasy.net> - - * generator/Property.cs : Fix get{} GLib.Value passing. - * glib/Object.cs : GetProperty passes the GLib.Value now. - * glib/Value.cs : Add a ctor to create Values for props. - * glue/value.c : add gtksharp_value_create_from_property. - -2002-05-29 Mike Kestner <mkestner@speakeasy.net> - - * */Makefile.in : remove generated source in clean target. - -2002-05-29 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : Fix build breaker from refactoring. - * sample/Makefile.in : Build the menu sample on linux. - -2002-05-28 Mike Kestner <mkestner@speakeasy.net> - - * makefile : add separate targets for native and platform - independent products per request from debian packager - Alp Toker <alp@atoker.com> - -2002-05-26 Mike Kestner <mkestner@speakeasy.net> - - * generator/Parser.cs : Implement Alias node parsing. - * generator/SymbolTable.cs : resolve aliased types. - -2002-05-23 Mike Kestner <mkestner@speakeasy.net> - - * generator/BoxedGen.cs : Update for Static SymbolTable - * generator/CallbackGen.cs : Use GenBase and Parameters classes - * generator/CodeGenerator.cs : Update for Static SymbolTable - * generator/Ctor.cs : code from StructBase using Parameters class - * generator/EnumGen.cs : Use GenBase - * generator/GenBase.cs : Abstract Stream Writer creation, stream - boilerplate, and common *Name properties - * generator/IGeneratable.cs : Update for Static SymbolTable - * generator/InterfaceGen.cs : Use GenBase - * generator/Method.cs : code from StructBase using Parameters class - * generator/ObjectGen.cs : Major refactoring. Use GenBase. Build - tables of Member generatables at construct time to facilitate - future name collision resolution logic. - * generator/Parameters.cs : new generatable to abstract duplicated - parameter parsing logic. - * generator/Parser.cs : Update for Static SymbolTable - * generator/Property.cs : code from ObjectGen - * generator/Signal.cs : code from ObjectGen - * generator/SignalHandler.cs : Update for Static SymbolTable - * generator/StructBase.cs : Update for Static SymbolTable - * generator/StructGen.cs : Update for Static SymbolTable - * generator/SymbolTable.cs : Make all methods and private members - static. There is no reason to ever have multiple tables. - -2002-05-13 Joe Shaw <joe@assbarn.com> - - * sample/Makefile.in: Use -L compiler flags and specify all of the - assemblies to link against. - -2002-05-13 Joe Shaw <joe@assbarn.com> - - * gtk/Makefile.in: Add the System.Drawing assembly to the compiler - command-line. - -2002-05-08 Joe Shaw <joe@assbarn.com> - - * generator/ObjectGen.cs (GenProperty): And uncomment it out because - the compiler bug is fixed. - -2002-05-08 Joe Shaw <joe@assbarn.com> - - * generator/ObjectGen.cs (GenProperty): Comment the last checkin out - because it exposes a compiler bug. - (GenSignal): Back this change out. - -2002-05-08 Joe Shaw <joe@assbarn.com> - - * */Makefile.in: Don't allow the shell to do file globbing; makes - --recurse work. - - * generator/ObjectGen.cs (GenProperty): We need to cast a GLib.Value - to a GLib.Object and then to whatever it is, because explicit casts - don't work to child classes. - (GenSignal): Append "EventHandler" when generating signal handlers - so we don't get symbol conflicts. - -2002-05-07 Mike Kestner <mkestner@speakeasy.net> - - * generator/SymbolTable.cs : map char to string. - -2002-05-07 Mike Kestner <mkestner@speakeasy.net> - - * */Makefile.in : Add clean targets. Add -L parms. - -2002-05-06 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : When generating a ctor(void) - for subclassing purposes, mark it protected, not public. - Thanks to Miguel for reporting this bug. - -2002-05-03 Mike Kestner <mkestner@speakeasy.net> - - * sample/makefile.win32 : add the Menu sample - * sample/Menu.cs : A menu and box packing sample. - -2002-05-02 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : Add support for .custom files. - * gtk/Window.custom : clean up build - * sample/HelloWorld.cs : Use the customizations. - * sample/ButtonApp.cs : Use the customizations. - -2002-05-02 Mike Kestner <mkestner@speakeasy.net> - - * README : Describe the new make procedure. - * configure.in : Add the new Makefile generation. - * makefile : add the glue dir, make linux the default build, - add an install target - * */makefile.win32 : temp build files for win32 - * */Makefile.in : new configurable make system - * */makefile : killed - * generator/BoxedGen.cs : Now uses GLib.Boxed - * generator/ObjectGen.cs : Use Values for Props. - * generator/SymbolTable.cs : Add IsEnum method. - * glib/Boxed.cs : Major overhaul. - * glib/Object.cs : Remove type specific (Get|Set)Property. Now - use GValue based property accessors. - * glib/TypeFundamentals.cs : Update to current values. - * glib/Value.cs : Refactor to use glue. - -2002-04-25 Mike Kestner <mkestner@speakeasy.net> - - * autogen.sh : simple config for the glue build - * configure.in : simple config for the glue build - * makefile : add glue dir to build - * glib/SList.cs : Fix some leakage. - * glue/value.c : a helper function for heap alloc of GValues - * glue/Makefile.am : build for libgtksharpglue - -2002-04-19 Mike Kestner <mkestner@speakeasy.net> - - * glib/SList.cs : A more sane approach. - * glib/Value.cs : Marshal strings directly with pinvoke - -2002-04-18 Joe Shaw <joe@assbarn.com> - - * */makefile: Allow a different MCS to be passed in on the make - command line. - -2002-04-09 Mike Kestner <mkestner@speakeasy.net> - - * tagging for gtk-sharp-0.1 - -2002-04-09 Mike Kestner <mkestner@speakeasy.net> - - * sample/ButtonApp.cs : Get it to run on linux. - -2002-04-04 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : Unstubify. - * generator/SymbolTable.cs : qualify some simple typenames. - -2002-03-29 Mike Kestner <mkestner@speakeasy.net> - - * */makefile : add make linux target. - -2002-03-29 Mike Kestner <mkestner@speakeasy.net> - - * generator/SymbolTable.cs (Trim): revamp TrimEnd call. - -2002-03-28 Mike Kestner <mkestner@speakeasy.net> - - * generator/SignalHandler.cs : switch to 2.0 libs - * generator/SymbolTable.cs : switch to 2.0 libs - * glib/Object.cs : switch to 2.0 libs - * glib/SList.cs : switch to 2.0 libs - * glib/Value.cs : switch to 2.0 libs - * gtk/Application.cs : switch to 2.0 libs - -2002-03-26 Mike Kestner <mkestner@speakeasy.net> - - * generator/SignalHandler.cs : Use Path.DirectorySeparatorChar. - -2002-03-25 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs : Throttle _gtk methods. - * generator/SymbolTable.cs : tweak dll names. - * glib/Object.cs : restructure DllImports and prop code. - * glib/SList.cs : restructure DllImports. - * glib/Value.cs : restructure DllImports. - * gtk/Application.cs : overload Init() to get past the string[] - marshaling crash on linux. - * sample/HelloWorld.cs : Use App::Init() since no args are needed. - -2002-03-24 Mike Kestner <mkestner@speakeasy.net> - - * generator/*Gen.cs : Use Path.DirectorySeparatorChar. - * generator/Parser.cs : better debug for unexpected types. - * generator/SymbolTable.cs : Use linux library names. - -2002-03-07 Mike Kestner <mkestner@speakeasy.net> - - * generator/CodeGenerator.cs : Refactor generatable iteration. - * generator/SymbolTable.cs : Add Generatables property to expose - complex_types.Values. - -2002-03-02 Mike Kestner <mkestner@speakeasy.net> - - * makefile : add linux build. - * generator/makefile : add linux build. - -2002-02-19 Mike Kestner <mkestner@speakeasy.net> - - * generator/BoxedGen.cs : Add ctor and method generation. - * generator/StructBase.cs : Switch to Raw syntax. - * glib/Boxed.cs : Add Handle prop, make Raw protected, and add ctors. - * glib/Object.cs : s/RawObject/Raw to simplify generation. - -2002-02-19 Mike Kestner <mkestner@speakeasy.net> - - * generator/Statistics.cs : New. Gathers stats about generation. - * generator/*.cs : Hook in the stat counters. - -2002-02-18 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs (GenCtor): StudCapsify static method names. - * generator/SymbolTable.cs (Trim): strip const- prefix. - * sample/ButtonApp.cs (Window_delete): handle RetVal. - -2002-02-17 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs (MangleName): add object and event. - * parser/gapi2xml.pl : Handle embedded callback declarations in method - parameter lists. - -2002-02-15 Mike Kestner <mkestner@speakeasy.net> - - * generator/SignalHandler.cs : Create the SignalArgs.Args array and fix - indexing into it. - * sample/ButtonApp.cs : A little cleanup. Not quite there yet. - * sample/HelloWorld.cs : Set up the RetVal in the delete handler. - -2002-02-14 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : suppress generation of get/set methods when - properties exist. Mangle method names on signal name clashes. Gen - the signals. - * generator/SymbolTable.cs : Add GetName. Add some more calls to Trim. - * generator/gtkapi.xml : adding binary file as an experiment. If the - diff's show this file, I'll be removing it with apologies and going - back to the separate package idea. - * parser/gapi2xml.pl : some signal related fixes. - * sample/HelloWorld.cs : uncomment the event hook. - -2002-02-10 Mike Kestner <mkestner@speakeasy.net> - - * generator/BoxedGen.cs (FromNative): Add explicit cast. - * generator/ObjectGen.cs (FromNative): Add explicit cast. - (GenSignal): New. Partial. Not hooked in yet. - * generator/StructBase.cs (GenMethod): return-type is a sub-element, - not an attribute. - -2002-02-09 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs (GenMethod): Add handle arg to paramless - method call and extern. - -2002-02-08 Mike Kestner <mkestner@speakeasy.net> - - * README : Some updates. - * generator/BoxedGen.cs : Add FromNative method. - * generator/CallbackGen.cs : Add FromNative method. - * generator/EnumGen.cs : Add FromNative method. - * generator/IGeneratable.cs : Add FromNative method. - * generator/InterfaceGen.cs : Add FromNative method. - * generator/ObjectGen.cs : Add FromNative method. Hook in GenMethod. - * generator/StructBase.cs : Revamp param handling. Add GenMethod. - * generator/StructGen.cs : Add FromNative method. - * generator/SymbolTable.cs : Add FromNative method. - * parser/gapi2xml.pl : Detect ctors before methods. Fix method names. - * sample/HelloWorld.cs : uncomment the Show call. - -2002-02-06 Mike Kestner <mkestner@speakeasy.net> - - * generator/BoxedGen.cs : Marshal as IntPtr using Raw prop. - * generator/ObjectGen.cs : Use Handle for marshaling. - * generator/StructBase.cs (CallByName): Fill out the stub. - (GetImportSig): Fill out the stub. - * generator/StructGen.cs (MarshalType): Use QualifiedName. - * generator/SymbolTable.cs (GetMarshalType): Trim type. - (CallByName): New. Provides calling syntax. - * sample/HelloWorld.cs : Make it compile. - -2002-02-02 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : Add IntPtr constructor generation. Pass a - ctor signature hash around to use in clash resolution. Generate a - void ctor if none is present which just calls the parent ctor. - * generator/StructBase.cs : Add non-void signature ctor generation, - including collision handling logic. Collisions are implemented as - static methods. - * generator/SymbolTable.cs : Map GSList to GLib.SList. Add type - trimming to remove trailing *'s. Need to suppress leading const yet. - * glib/Object.cs : Add default ctor for void and IntPtr ctors. - * glib/SList.cs : Implementation of a wrapper class for GSLists. Lots - of FIXMEs. - * parser/gapi2xml.pl : Handle ** and array params. - -2002-01-17 Mike Kestner <mkestner@speakeasy.net> - - * generator/BoxedGen.cs : Removed Name, CName, and QualifiedName. - * generator/ObjectGen.cs : Removed Name, CName, and QualifiedName. - * generator/StructBase.cs : Add Name, CName, and QualifiedName. Add - GenCtor method. Stub GetCallString, GetImportSig, and GetSignature - methods. - * generator/StructGen.cs : Removed Name, CName, and QualifiedName. - * generator/SymbolTable.cs : Add GetDllName method. - * parser/gapi2xml.pl : Fix a couple <parameters> bugs. - -2002-01-16 Mike Kestner <mkestner@speakeasy.net> - - * generator/BoxedGen.cs : New boxed type generatable. - * generator/ObjectGen.cs : Add boxed type property generation and stub - off interface properties for now. - * generator/Parser.cs : Add boxed element parsing. - * generator/SymbolTable.cs : Add IsBoxed and IsInterface methods. - * glib/Boxed.cs : New base class for deriving boxed types. - * glib/Object.cs : Add boxed GetProp/SetProp methods. - * parser/gapi2xml.pl : Add boxed type element formatting. - * parser/gapi_pp.pl : Add preprocessing of the generated sourcefiles. - Handle the builtins and make them identifiable to the xml generator. - -2002-01-11 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : Add property generation. - * generator/SymbolTable.cs : More fixage to simple_types. Add - GetMarshalType and IsObject methods. - * glib/Object.cs : Rename Events prop to EventList to avoid name - collision. Add float, double, uint, and IntPtr GetProp and SetProp - methods. - * parser/TODO : Add a couple prop related bugs to come back for. - * parser/gapi2xml.pl (addPropElems): Restructure. It was thoroughly - broken. It's better now. - -2002-01-10 Mike Kestner <mkestner@speakeasy.net> - - * generator/StructBase.cs (GenField): Return a bool success indicator. - * generator/ObjectGen.cs : Check the return of GenField. - * generator/SymbolTable.cs : More fixage to simple_types. - * parser/gapi2xml.pl : Fix multiline comment bug, and callback name - hashing logic. Squash callbacks that aren't in the namespace. - * sample/HelloWorld.cs : Clean out some debugging to make it closer to - compiling. Not quite there yet. - -2002-01-08 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : Use name in QualName, not cname. - * generator/EnumGen.cs : Use name in QualName, not cname. - * generator/InterfaceGen.cs : Use name in QualName, not cname. - * generator/StructBase.cs (GenField): gen as public. - -2002-01-08 Mike Kestner <mkestner@speakeasy.net> - - * generator/CallbackGen.cs : New stub for delegate generation. - * generator/InterfaceGen.cs : New stub for interface generation. - * generator/Parser.cs : Add the interface and callback element hooks. - * generator/SymbolTable.cs : Additions to simple_types hash. - -2002-01-07 Mike Kestner <mkestner@speakeasy.net> - - * generator/ObjectGen.cs : Make parent debug statement more helpful. - * generator/Parser.cs : Add interface element case. - * parser/gapi2xml.pl : Add interface types. - * parser/gapi_pp.pl : Grab G_TYPE_INSTANCE_GET_INTERFACE defines. Grab - struct declarations out of private headers. - -2002-01-06 Mike Kestner <mkestner@speakeasy.net> - - * */makefile : Add atk to the build. - * generator/EnumGen.cs : Create the generated dir if necessary. - * generator/ObjectGen.cs : Create the generated dir if necessary. - * generator/StructGen.cs : Create the generated dir if necessary. - * parser/gapi2xml.pl : Squash bug in comma separated field defs. - -2002-01-06 Mike Kestner <mkestner@speakeasy.net> - - * generator/EnumGen.cs : Open stream Create only. - * generator/ObjectGen.cs : New generatable for GObject subclasses. - * generator/Parser.cs : Add the object element hook. - * generator/StructBase.cs : Handle bits element in GenField. - * generator/StructGen.cs : Open stream Create only. - * generator/SymbolTable.cs : Additions to simple_types hash. - * parser/gapi2xml.pl : Parse bitflags into the bits element. - -2002-01-05 Mike Kestner <mkestner@speakeasy.net> - - * generator/SymbolTable.cs : First pass at simple_types hash. - -2002-01-05 Mike Kestner <mkestner@speakeasy.net> - - * generator/*.cs : Move into GtkSharp.Generation namespace. - * generator/CodeGenerator.cs (Main): Add usage check. Add SymbolTable. - * generator/EnumGen.cs (QualifiedName): New. - (Generate): Add SymbolTable to signature. - * generator/IGeneratable : Add QualifiedName prop and update Generate - signature. - * generator/Parser.cs : Switch from plain Hashtable to SymbolTable. - (Parse): Replaces the Types property and returns a SymbolTable. - * generator/StructBase.cs : New base class to derive struct and object - types. Initial implementation of protected GenField method and ctor. - * generator/StructGen.cs : New non-object struct type generatable. - * generator/SymbolTable.cs : New. Manages complex types hash and a - simple types hash. Will provide generic lookup interface. - -2002-01-04 Mike Kestner <mkestner@speakeasy.net> - - * makefile : switch to the new generator. - * generator/CodeGenerator.cs : New main program class. - * generator/IGeneratable.cs : Interface for generation methods/props. - * generator/EnumGen.cs : Subclass of IGeneratable for enums. - * generator/Parser.cs : The XML parser. - * parser/gapi_pp.pl : A source preprocessor for api extraction. - * parser/gapi2xml.pl : Produces Xml document for GObject based APIs. - -2001-12-31 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Fix EOL handling for DOS \r\n patterns as - reported by David Dawkins. - -2001-12-17 Mike Kestner <mkestner@speakeasy.net> - - * makefile : Add the pango subdir. - * codegen/defs-parse.pl : Add a buttload of type entries to %maptypes - and %marshaltypes. Ignore props, sigs, and methods for non GObject - types. Turn on all classes. Major beefup of struct generation. Start - to use the new sighandlers. Rip out const- types. Handle Unicode - string marshalling. - * codegen/gdk-structs.defs : Regenerated. - * codegen/get-structs-from-source.pl : Handle typedef x y; Suppress - structs with "Private" in the typename. Handle multiple levels of - typedeffing. Handle function pointers. Suppress comments sanely. - * codegen/gtk-props.defs : Fill out the rest of the classes. - * codegen/gtk-signals.defs : Fill out the rest of the classes. - * codegen/gtk-structs.defs : First pass. Hacked obscenely. - * codegen/hardcoded.defs : Kill. No hardcoding needed anymore. - * codegen/makefile : Use the new defs files. - * codegen/pango.defs : Ripped from pygtk. - * codegen/pango-structs.defs : New struct defs gen'd with my tool. - * codegen/pango-types.defs : Ripped from pygtk. - * gdk/makefile : Add the pango-sharp.dll ref. - * gdk/SimpleEvent.cs : Killed. - * glib/SimpleSignal.cs : Killed. - * gtk/makefile : Add the pango-sharp.dll ref. - * gtk/Widget.cs : Killed. - * pango/makefile : New build dir. - -2001-12-11 Mike Kestner <mkestner@speakeasy.net> - - * codegen/get-structs-from-source.pl : New define-struct extractor. - * codegen/gdk-structs.defs : generated defs with a few hand edits. - -2001-12-04 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Index %structs by cname, not name. Derive - structs from class to facilitate marshalling since Value types can't - use the Marshal.PtrToStructure method. Generate StructLayout attr - for struct class defs. Stuff the signal args into a SignalArgs inst - to pass to the EventHandlers. - * sample/HelloWorld.cs : some cleanup and temporary signal playcode. - -2001-12-01 Mike Kestner <mkestner@speakeasy.net> - - * makefile : Make ROOT /cygdrive/, not //. - -2001-11-25 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl (get_sighandler): gen the helper class. arg - passing and return value handling need beefing up still. - * glib/SignalArgs.cs : New arg passing/ return value handling class. - * glib/SignalCallback.cs (dtor): kill, this will be gen'd in the - subclasses. (ctor): prune down to two params. - -2001-11-24 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : mkdir the glib/generated dir. - (gen_signal): Call new get_sighandler sub. Doesn't use the returned - value yet. s/event/ev3nt on arg names. - (get_sighandler): new sub to lookup or gen a signal helper/delegate. - Only generates the delegate so far. - * codegen/hardcoded.defs : Added a stub for Gdk.Event. - * gdk/Event.cs : Killed, now a generated struct. - * gdk/SimpleEvent.cs (SimpleEventCallback): Use Marshal.PtrToStructure - to create the Event, not a ctor(IntPtr). - * glib/SignalCallback.cs : New abstract base class for signal helpers. - -2001-11-14 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Add System.Collections to usings. - s/event/signal. Add gen_signal sub and call it from gen_object. - Mangle method names that collide with signal names by prepending - Emit to the method name. - * codegen/makefile : add gtk-signals.defs to the build. - -2001-11-13 Mike Kestner <mkestner@speakeasy.net> - - * codegen/get-signals-from-source.pl : My own little perl signal - parser. - * codegen/gtk-signals.defs : Ripped the GtkWindow signals into here - to goof with. - -2001-11-10 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Fix String prop generation code. - * gtk/Window.custom : Fix ctor param casting error. - -2001-11-09 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Use the @ctors list to determine if a class - is abstract. There is an abstract indicator in the new defs format - description, but it doesn't appear in the defs files currently. This - method should be reliable though, even in the long term. Use the same - check to determine if ctor(IntPtr obj) should be gen'd. - -2001-11-09 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Now genning Window, AccelGroup, Bin, and - GdkPixbuf classes to peel the csc error onion. Explicitly add GObject - to the "exists ($objects{...})" branches, since GObject is a hard - coded Class. - -2001-11-08 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : Build a structs hash and gen the structs - after the first pass of the defs. For structs and functions, mangle - the 100s of params/fields named object to objekt. Insert using stmnts - for structs too. - * codegen/hardcoded.defs : Add GtkAccelEntry struct. - -2001-11-07 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl (gen_object): Insert using statements. Insert - class members from corresponding .custom file. - * gtk/Window.custom : Renamed file from Window.cs. Removed all the - automatically generated members. This will be the mechanism used to - improve upon the mechanically generated binding. - -2001-11-05 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl (gen_object): Generate a ctor (IntPtr obj) for - every object. This is a wrapper constructor for use by an Object - manager which will be called by GLib.Object.GetObject eventually to - wrap raw GObject pointers returned by methods/props. - -2001-11-04 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : struct generation. Added float and double - type mapping entries. - * codegen/hardcoded.defs : GdkGeometry definition. define-struct - doesn't appear to be supported in the current defs files. This file - will be used for manual definition of unsupported defs. - * codegen/makefile : add hardcoded.defs. - -2001-11-02 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : define-struct detection. Partial ctor - support. Still need to deal with ctor signiature collisions. - Refactored gen_method to share get_param_strings with ctors. - -2001-10-30 Mike Kestner <mkestner@speakeasy.net> - - * codegen/defs-parse.pl : streamline mkdir stuff. Prune the object - list back to just Window for now. Suppress generation of the Prop - get/set accessor methods. - * codegen/gdk-types.defs : Updated the 2button/3button event types - since I don't feel like automangling them now. - * gdk/Event.cs : Killed the now redundant EventType declaration. - * glib/Object.cs : Override the Equals and GetHashCode methods. - -2001-10-25 Mike Kestner <mkestner@speakeasy.net> - - * glib/Object.cs : Added Get|SetProperty methods for Object - properties. - -2001-10-25 Mike Kestner <mkestner@speakeasy.net> - - * codegen/get-props-from-source.pl : Temporary (possibly) defs - generator for props. Will probably kill this when the official - defs support props. - * codegen/defs-parse.pl : Added object-based aggregation of - defs. Generate the class shells, methods, and props. - * codegen/gdk-types.defs : ripped from pygtk. - * codegen/gtk.defs : ripped from pygtk. - * codegen/gtk-props.defs : some props defs. - * codegen/makefile : add the new defs files. - -2001-10-11 Mike Kestner <mkestner@speakeasy.net> - - * makefile : Add the codegen directory - * codegen/defs-parse.pl : Moved here from topdir and updated to parse - the new defs format for enums and flags. - * codegen/gtk-types.defs : Borrowed from pygtk. - * codegen/makefile : new - * gtk/makefile : remove generation step. - * gtk/gtk.defs : removed, now in codegen dir. - -2001-10-07 Mike Kestner <mkestner@speakeasy.net> - - * gtk/Button.cs : Some nomenclature changes. s/EmitClicked/Click, etc. - We need a consistent way to deal with naming clashes in gtk's method - and signal namespaces. When clashes exist, events will be made past - tense and methods to programatically emit events will be the present - tense (e.g. Clicked event and Click method). - -2001-10-07 Mike Kestner <mkestner@speakeasy.net> - - * glib/Object.cs : Added public Handle property. It would be nice - if I could make the RawObject public for get and protected for set, - but that doesn't appear to be possible with C# properties. - * gtk/Container.cs : New class with 2 of the 3 props and the Add/Remove - methods only implemented. - * gtk/Widget.cs : Added SizeRequest prop which is a combination of - HeightRequest and SizeRequest. Embrace and extend gtk... - * gtk/Window.cs : Derive from newly added Container subclass. - * sample/ButtonApp.cs : Simple tire-kicking app. - -2001-10-06 Mike Kestner <mkestner@speakeasy.net> - - * gtk/Button.cs : Implemented 3 constructors, 5 methods, 4 properties, - and 6 signals. Button API is 100% implemented. Need to implement - some Container methods to be able to complete testing. - -2001-10-05 Mike Kestner <mkestner@speakeasy.net> - - * defs-parse.pl : A little automation for the binding. The enums and - flags can be painlessly generated from defs files. - * gtk/makefile : use defs-parse.pl to produce generated.cs. - * gtk/.cvsignore : hush generated.cs - * gtk/gtk.defs : unceremoniously ripped from gtk+ HEAD. - * gtk/Window.cs : Killed the WindowType enum which is now generated. - -2001-10-04 Mike Kestner <mkestner@speakeasy.net> - - * glib/SimpleSignal.cs : Reworked to parallel SimpleEvent. - -2001-10-04 Mike Kestner <mkestner@speakeasy.net> - - * gtk/Widget.cs : Implemented all the bool, string, and int props. - -2001-10-04 Mike Kestner <mkestner@speakeasy.net> - - * gdk/SimpleEvent.cs : Temporarily uncomment the GCHandle code until - a layout is ready and exceptions can be avoided. - * gtk/Widget.cs : Killed all the signal and event attaching methods. - They never belonged here, and now they exist in the SimpleEvent. - Add a Signals hash to hold refs of the Signal handlers. Killed default - ctor and the dtor. The event Add/Remove methods now create a - SimpleEvent, stuff it in the hash, and remove it when the last handler - disappears. - -2001-10-04 Mike Kestner <mkestner@speakeasy.net> - - * HACKING : Little bit of cleanup. - * gdk/SimpleEvent.cs : Redesigned a bit. Docs. Replaced refcounting - mechanism with an instance hash and added ctor/dtor. This class - now completely encapsulates the signal attachment and forwarding - mechanism for GdkEvent based signals. It attaches to the raw signal, - maintains a ref to the associated event handler, and uses the static - callback to activate the event handler on signal receipt. - * sample/makefile : killed one last CSC explicit reference. - -2001-10-02 Mike Kestner <mkestner@speakeasy.net> - - * glib/Value.cs : Tried adding CallingConvention.Cdecl to all the - DllImports, but still couldn't get reliable Propery setting without - periodic NullReference exceptions. When all else fails, drop back - and punt. - * glib/Object.cs : Rewrote Set|GetProperty methods. Now they use - g_object_get|set and don't rely on GValues. The int, bool, and string - prop types are now working reliably. - * gtk/Window.cs : Update all Properties to use new GLib.Object - signatures. - * sample/HelloWorld.cs : added some more property usage for testing - purposes. - -2001-09-29 Mike Kestner <mkestner@speakeasy.net> - - * glib/Value.cs (int ctor): New constructor for int-based values. - (int exp cast): New explicit cast operator for Val to int conversion. - * gtk/Window.cs (DefaultHeight): New prop. - (DefaultWidth): New prop. - -2001-09-28 Mike Kestner <mkestner@speakeasy.net> - - * glib/Object.cs (GetProperty): New, gets props from the raw obj. - (SetProperty): New, for setting props on the raw obj. - * glib/Value.cs (type ctor): New needed for get accessors. - *gtk/Window.cs (AllowGrow): Uncommented and filled out. - (AllowShrink): Uncommented and filled out. - (DestroyWithParent): Uncommented and filled out. - (Modal): Uncommented and filled out. - (Resizable): Added. All the bool Props work now. - -2001-09-28 Mike Kestner <mkestner@speakeasy.net> - - * glib/Value.cs (~Value): New destructor to release g_malloc'd space. - (default ctor): New default ctor just mallocs without init. - (String ctor): call default - (bool ctor): call default - (Init): New post construct initializer. - (String exp cast): Replaces ToString method. - (bool exp cast): New for bool extraction. - (MarshalAs): Renamed prop was RawValue. - -2001-09-27 Mike Kestner <mkestner@speakeasy.net> - - * glib/Object.cs : Docs for everything. Made Objects hash private. - Some coding style cleanup. Pruned some of the TODO methods from the - commented header listing to make a more relistic picture of the - remaining effort. Some GSignal stuff probly belongs here too. - ([Get|Set]Data): Killed some DllImports and set up methods to store - arbitrary data in a managed hash table. - -2001-09-27 Mike Kestner <mkestner@speakeasy.net> - - *.cs : Added .dll extension to a load of DllImports. - * makefile : now can make the project with one make windows and on - both NT and Win98. - * gdk/Event.cs : Fixed some invalid symbol names and commented out a - load of stuff. - * gdk/SimpleEvent.cs : Relocated file from unnecessary subdir and fixed - several event keyword clashing bugs. Need to relocate the EventArgs - class out of here into its own file. Fixed loads of typos. - * glib/Object.cs : Killed the Constructor, this should be a purely - abstract class. made Events property public until I can fix the Signal - proxying system's broken reliance on it. - * glib/SimpleSignal.cs : Relocated, namespaces, and named this Class. - Loads of bugfixes. Still doesn't work worth a damn, but it builds. - * glib/TypeFundamentals.cs : New enum for use in the Value code. - * glib/Value.cs : Implemented a more opaque approach with heap allocated - memory and g_value_init and friends. Still doesn't work. Will probably - switch to a more C# like approach and avoid GValues altogether. - * gtk/Button.cs : Commented out some brokeness until I can get around - to fixing it later. - * gtk/Widget.cs : Commented out a bunch of the new signal stuff until - I get around to it. - * gtk/Window.cs (Title): using g_object_set until I work out the - details of the new Value/SetProperty system. It looks like g_object_set - will end up being easier to use via PInvoke. - -2001-09-25 Bob Smith <bob@thestuff.net> - - * Added refcounts to delegates to make sure they can be unpined when - not needed. - -2001-09-21 Bob Smith <bob@thestuff.net> - - * Signal system totally reworked. It should be stable now. - * glib/Object.cs: Rewrote the way the wrapper is kept track of. - -2001-09-20 Bob Smith <bob@thestuff.net> - - * glib/ObjectManager.cs: Nuked. - * glib/Object.cs: Keep track of wrapper. - * gtk/Object: First stab at better signal system. Should reduce - number of pins nessisary. - -2001-09-19 Mike Kestner <mkestner@speakeasy.net> - - * HACKING : New rulez. - * NOTES: Killed. We have a mailing list now for this kind of stuff. - * glib/makefile : New, to build the new glib-sharp.dll target. - * glib/Object.cs : (GetObject): Commented out. Design problems here. - IntPtr's can't be used in the manner this code attempts to use them. - (Data prop): Commented out. Apparently keyed properties are not - supported. - (Object prop): Renamed RawObject, and made it protected. - (Events): Fixed to cause list to be initialized if null and then - return the list. - * glib/ObjectManager.cs : commented out entirely. Not sure what this - code is trying to accomplish and it doesn't compile. - * glib/Value.cs : New attempt at implementing GValues. Doesn't work - yet. - * gtk/Button.cs : Updated to use RawObject. - (Clicked event): s/EmitDeleteEvent/EmitClickedEvent. - (Button(String)): s/gtk_label_new_with_lable/gtk_button_new_with_label. - * gtk/Label.cs : Fixed some yank and paste errors where 2 value params - were getting passed to all the set_* property methods. - * gtk/Window.cs : Fixed hanging GTK namespace ref. - * sample/HelloWorld.cs : Fixed hanging GTK namespace ref. - - -2001-09-18 Bob Smith <bob@thestuff.net> - - * glib/Object.cs : Moved parts of gtk/Object.cs here, and added - static GetObject method and a Data property. - * glib/ObjectManager.cs : New. - * gtk/Object.cs : removed some GObject wrapping code. - * gtk/*.cs : Updated namespace from GTK to Gtk. - -2001-09-18 Bob Smith <bob@thestuff.net> - - * gtk/Object.cs : Added EventList and Object properties. - * gtk/Widget.cs : Updated event emission logic. - * gtk/Window.cs : added Window(IntPtr) constructor. - * gtk/Button.cs : New. Partial implementation of Button class. - * gtk/Label.cs : New. Partial implementation of Label class. - -2001-09-17 Mike Kestner <mkestner@speakeasy.net> - - Initial Import. Partial implementation of Object, Widget, Window, - and Application classes and HelloWorld.cs sample app. @@ -1,11 +1,10 @@ -Before beginning work on something, please post your intentions to the +Before beginning work on something, please post your intentions to the mailing list (gtk-sharp-list@ximian.com). Duplication of effort just gets -folks cranky in general. +folks cranky in general. -Prior to checking anything into CVS, please send a patch to the mailing list -for approval. Any patches should be submitted in diff -u format. Also, it is -assumed that the submitter has verified that the patch does not break the -build, and hopefully that it doesn't break runtime. +Code contributions can be made in the form of pull requests on GitHub, +through https://github.com/mono/gtk-sharp or by attaching patches to bug +reports. Please make sure the patch is produced using 'git format-patch'. Getting Started: @@ -21,5 +20,5 @@ Getting Started: o sources/README If you still have more questions or need assitance, you can get help on - the Gtk# mailing list and the #mono IRC channel. (Information about - each of these is contained in the README file.) + the Gtk# mailing list and the #gtk# or #mono IRC channels. (Information + about each of these is contained in the README file.) diff --git a/Makefile.am b/Makefile.am index 36c055d..80cacc1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,6 @@ EXTRA_DIST = \ gtk-sharp.snk \ policy.config.in \ AssemblyInfo.cs.in \ - ChangeLog \ HACKING \ README \ README.generator diff --git a/Makefile.in b/Makefile.in index 263f013..9412d8e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -50,14 +50,13 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = . DIST_COMMON = README $(am__configure_deps) \ $(srcdir)/AssemblyInfo.cs.in $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/policy.config.in $(top_srcdir)/configure AUTHORS \ - COPYING ChangeLog NEWS TODO config.guess config.sub depcomp \ - install-sh ltmain.sh missing + COPYING NEWS TODO config.guess config.sub depcomp install-sh \ + ltmain.sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -124,8 +123,8 @@ am__relativize = \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best +DIST_ARCHIVES = $(distdir).tar.bz2 distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' @@ -143,8 +142,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -168,7 +165,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -223,6 +219,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -278,11 +276,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @@ -291,7 +285,6 @@ EXTRA_DIST = \ gtk-sharp.snk \ policy.config.in \ AssemblyInfo.cs.in \ - ChangeLog \ HACKING \ README \ README.generator @@ -566,7 +559,6 @@ distdir: $(DISTFILES) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) - dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) @@ -597,7 +589,7 @@ dist-zip: distdir $(am__remove_distdir) dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then @@ -1 +1,50 @@ -try CNN +=============================================================================== +Gtk# 2.99.0 - 2012-10-23 +=============================================================================== + +Gtk# 2.99.0 is the first release of C# bindings for GTK 3.x. This is a beta +release, primarily intended for applications developers who want to start +porting their application to GTK 3.x. + +This version of Gtk# provides bindings for the API exposed by these libraries: + * cairo 1.10.0 + * glib 2.28.0 + * pango 1.28.3 + * atk 1.32.0 + * gdk-pixbuf 2.22.1 + * gtk+ 3.0.0 + +There is no API stability guarantee for now, but we will try to keep breaking +changes to a minimum. + +This version of Gtk# can be installed in parallel with Gtk# 2.x, and should not +have any impact on applications using Gtk# 2.x. + +Changes +------- + + * All the new APIs provided by GTK 3.0 and friends are now available. + + * Gtk# now provides bindings for cairo 1.10 in cairo-sharp.dll. In the future + we might go back to using the Mono.Cairo.dll binding included in Mono. + + * Bindings for Gio are now included, instead of requiring a separate + gio-sharp package. + + * GLib.Object now uses the Dispose pattern. Subclasses that need to do + resource clean-up should implement a Dispose(bool) method. + + * Custom code is now provided solely using partial classes. The Foo.custom + files that were used before are now proper Foo.cs files. + + * Various enhancements to the parser and the generator. + +Bug fixes +--------- + + * generator: Properly handle boolean attributes when parsing the GAPI XML + * glib: do not call g_thread_ functions in GLib >= 2.31 + * gtk: Fix resurrection cycles in container subclasses (bxc#3801) + +Lots of other bug fixes are included, in particular all the relevant fixes from +the stable 2.12 branch. @@ -1,14 +1,13 @@ -The Gtk# website can be found at: http://gtk-sharp.sourceforge.net/ +The Gtk# website can be found at: http://www.mono-project.com/GtkSharp Gtk# is a .NET language binding for the GTK+ toolkit and assorted GNOME -libraries. Gtk# is free software, licensed under the GNU LGPL. The target -is the 2.6 platform. +libraries. Gtk# is free software, licensed under the GNU LGPL. Building & Installing Gtk#: --------------------------- - Install the gtk-2/gtk-3 development headers first. On Debian, this can be done using: - apt-get install libgtk2.0-dev libgtk-3-dev + Install the gtk-3 development headers first. On Debian, this can be done using: + apt-get install libgtk-3-dev The build is the traditional: @@ -30,10 +29,43 @@ Building & Installing Gtk#: which was used for Mono. This might have been "/usr", "/usr/local", or something similar.) - If you are compiling from SVN, you will need libtool and the auto* tools + If you are compiling from GIT, you will need libtool and the auto* tools and will need to replace the configure above with autogen.sh. +The gui-thread-check profiler module. +------------------------------------- + + Since version 3 of gtk# a profiler called "gui-thread-check" is included as + part of the install for debugging purposes. (It's located in the subfolder + gtk/gui-thread-check .) + + This profiler module can be used to check if a GTK# application is trying to + invoke gtk or gdk methods from a thread which is not the main GUI thread. + + To use it, run your application with the command: + + mono --profile=gui-thread-check yourapp.exe + + If the profiler is properly installed, you'll see an output like this: + + *** Running with gui-thread-check *** + *** GUI THREAD INITIALIZED: 2861676352 + + While the application is running, if the profiler detects a non-gui thread + invoking gtk methods, it will print a warning message together with a + stack trace. For example: + + *** GTK CALL NOT IN GUI THREAD: Widget.gtk_widget_get_parent + Widget.get_Parent + SourceEditorWidget.SetLastActiveEditor + SourceEditorWidget.get_TextEditor + SourceEditorWidget.get_Document + SourceEditorWidget.HandleParseInformationUpdaterWorkerThreadDoWork + BackgroundWorker.OnDoWork + BackgroundWorker.ProcessWorker + + Discussion & Support: --------------------- @@ -55,12 +87,8 @@ Discussion & Support: http://lists.ximian.com/archives/public/gtk-sharp-list/ - Further, a Wiki is available for Gtk#, and can be found at: - - http://www.nullenvoid.com/gtksharp/wiki/ - Also, people can get help with and discuss Gtk# on IRC via the - #mono channel on the irc.gnome.org IRC server. + #gtk# or #mono channels on the irc.gnome.org IRC server. People looking for general help with C# should visit the #c# channel on irc.freenode.net IRC server. @@ -72,10 +100,7 @@ Developers: For developers wishing to "get started" with Gtk#, they are encouraged to read the Mono Hand Book: - http://www.go-mono.com/tutorial - - In the Mono Hand Book, Chapter 21 is on Gtk#. (In the Mono Hand Book, - the Gtk# .NET bindings are refered to as GNOME.NET.) + http://www.mono-project.com/Monkeyguide Hackers: @@ -85,4 +110,4 @@ Hackers: read the file named: HACKING. Also, anyone wishing to hack Gtk# is encouraged to join the Gtk# - mailing list. And to visit the #mono IRC channel (on irc.gnome.org). + mailing list. And to visit the #gtk# IRC channel (on irc.gnome.org). @@ -1,9 +1,6 @@ Tasks open for Gtk# 3.0, feel free to edit this file: Generated API audit -Improvements to external GIO binding -Improvement to external Builder binding -Documentation migration +Write a "Migrating from GTK# 2.x to GTK# 3" guide New API documentation -Port samples to work with Gtk# 3 - +Improvement to external Builder binding @@ -9581,6 +9581,25 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 diff --git a/atk/Makefile.in b/atk/Makefile.in index be227f7..d8d9923 100644 --- a/atk/Makefile.in +++ b/atk/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ DIST_COMMON = $(srcdir)/../Makefile.include $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/atk-sharp.dll.config.in subdir = atk @@ -153,8 +152,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -178,7 +175,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -233,6 +229,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -288,11 +286,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/atk/glue/Makefile.in b/atk/glue/Makefile.in index 313e96b..c69fda8 100644 --- a/atk/glue/Makefile.in +++ b/atk/glue/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = atk/glue DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -137,8 +136,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -162,7 +159,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -217,6 +213,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -272,11 +270,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/cairo/Makefile.in b/cairo/Makefile.in index fde0ea5..fb3dd80 100644 --- a/cairo/Makefile.in +++ b/cairo/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = cairo DIST_COMMON = $(srcdir)/AssemblyInfo.cs.in $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @@ -85,8 +84,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -110,7 +107,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -165,6 +161,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -220,11 +218,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69. +# Generated by GNU Autoconf 2.69 for gtk-sharp 2.99.1. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -585,14 +585,13 @@ MFLAGS= MAKEFLAGS= # Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="README" +PACKAGE_NAME='gtk-sharp' +PACKAGE_TARNAME='gtk-sharp' +PACKAGE_VERSION='2.99.1' +PACKAGE_STRING='gtk-sharp 2.99.1' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> @@ -638,7 +637,6 @@ ENABLE_MONODOC_TRUE ENABLE_DOTNET_FALSE ENABLE_DOTNET_TRUE MDOC -GDK_BACKEND GTK_LIBS GTK_CFLAGS ATK_LIBS @@ -660,13 +658,13 @@ CSC RUNTIME AL GACUTIL +PROFILER_LIBS +PROFILER_CFLAGS MONO_DEPENDENCY_LIBS MONO_DEPENDENCY_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH OFF_T_FLAGS -BUILD_GTK_LIBS -BUILD_GTK_CFLAGS PKG_CONFIG OTOOL64 OTOOL @@ -719,6 +717,14 @@ API_VERSION MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build am__untar am__tar AMTAR @@ -742,18 +748,6 @@ am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build target_alias host_alias build_alias @@ -820,6 +814,8 @@ PKG_CONFIG_PATH PKG_CONFIG_LIBDIR MONO_DEPENDENCY_CFLAGS MONO_DEPENDENCY_LIBS +PROFILER_CFLAGS +PROFILER_LIBS GLIB_CFLAGS GLIB_LIBS GIO_CFLAGS @@ -872,7 +868,7 @@ sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' @@ -1372,7 +1368,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. +\`configure' configures gtk-sharp 2.99.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1420,7 +1416,7 @@ Fine tuning of the installation directories: --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --docdir=DIR documentation root [DATAROOTDIR/doc/gtk-sharp] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1437,12 +1433,13 @@ Program names: System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then - + case $ac_init_help in + short | recursive ) echo "Configuration of gtk-sharp 2.99.1:";; + esac cat <<\_ACEOF Optional Features: @@ -1487,6 +1484,10 @@ Some influential environment variables: C compiler flags for MONO_DEPENDENCY, overriding pkg-config MONO_DEPENDENCY_LIBS linker flags for MONO_DEPENDENCY, overriding pkg-config + PROFILER_CFLAGS + C compiler flags for PROFILER, overriding pkg-config + PROFILER_LIBS + linker flags for PROFILER, overriding pkg-config GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config GIO_CFLAGS C compiler flags for GIO, overriding pkg-config @@ -1569,7 +1570,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -configure +gtk-sharp configure 2.99.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2030,7 +2031,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by $as_me, which was +It was created by gtk-sharp $as_me 2.99.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2378,6 +2379,9 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu + +am__api_version='1.11' + ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then @@ -2407,121 +2411,6 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -ac_config_headers="$ac_config_headers config.h" - -am__api_version='1.11' - # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -2957,8 +2846,8 @@ fi # Define the identity of the package. - PACKAGE=gtk-sharp - VERSION=2.99.0 + PACKAGE='gtk-sharp' + VERSION='2.99.1' cat >>confdefs.h <<_ACEOF @@ -2992,13 +2881,167 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +$as_echo_n "checking how to create a ustar tar archive... " >&6; } +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' +_am_tools=${am_cv_prog_tar_ustar-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5 + ($am__untar <conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +if ${am_cv_prog_tar_ustar+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_prog_tar_ustar=$_am_tool +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +$as_echo "$am_cv_prog_tar_ustar" >&6; } +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +ac_config_headers="$ac_config_headers config.h" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. @@ -12731,11 +12774,6 @@ if test "x$PKG_CONFIG" = "xno"; then as_fn_error $? "You need to install pkg-config" "$LINENO" 5 fi -BUILD_GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0` -BUILD_GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0` - - - # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. @@ -12965,6 +13003,99 @@ $as_echo "yes" >&6; } has_mono=true fi +#libmono and glib required for gui-thread-check profiler module + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PROFILER" >&5 +$as_echo_n "checking for PROFILER... " >&6; } + +if test -n "$PROFILER_CFLAGS"; then + pkg_cv_PROFILER_CFLAGS="$PROFILER_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-2 glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "mono-2 glib-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PROFILER_CFLAGS=`$PKG_CONFIG --cflags "mono-2 glib-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PROFILER_LIBS"; then + pkg_cv_PROFILER_LIBS="$PROFILER_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-2 glib-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "mono-2 glib-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PROFILER_LIBS=`$PKG_CONFIG --libs "mono-2 glib-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PROFILER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "mono-2 glib-2.0" 2>&1` + else + PROFILER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "mono-2 glib-2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PROFILER_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (mono-2 glib-2.0) were not met: + +$PROFILER_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables PROFILER_CFLAGS +and PROFILER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables PROFILER_CFLAGS +and PROFILER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://pkg-config.freedesktop.org/>. +See \`config.log' for more details" "$LINENO" 5; } +else + PROFILER_CFLAGS=$pkg_cv_PROFILER_CFLAGS + PROFILER_LIBS=$pkg_cv_PROFILER_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + # Extract the first word of "gacutil", so it can be a program name with args. set dummy gacutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -13777,9 +13908,6 @@ fi -GDK_BACKEND=`pkg-config --variable=target gtk+-3.0` - - # Extract the first word of "mdoc", so it can be a program name with args. set dummy mdoc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -13849,7 +13977,7 @@ fi -ac_config_files="$ac_config_files AssemblyInfo.cs Makefile policy.config sources/Makefile parser/Makefile parser/gapi-3.0.pc parser/gapi3-fixup parser/gapi3-parser generator/Makefile generator/gapi3-codegen glib/Makefile glib/glib-sharp-3.0.pc glib/glib-sharp.dll.config gio/Makefile gio/gio-sharp-3.0.pc gio/gio-sharp.dll.config gio/glue/Makefile cairo/AssemblyInfo.cs cairo/Makefile pango/Makefile pango/pango-sharp.dll.config pango/glue/Makefile atk/Makefile atk/atk-sharp.dll.config atk/glue/Makefile gdk/Makefile gdk/gdk-sharp.dll.config gtk/Makefile gtk/gtk-sharp-3.0.pc gtk/gtk-sharp.dll.config gtk/glue/Makefile gtkdotnet/Makefile gtkdotnet/gtk-dotnet.dll.config gtkdotnet/gtk-dotnet-3.0.pc doc/Makefile sample/GtkDemo/Makefile sample/Makefile sample/pixmaps/Makefile sample/test/Makefile sample/valtest/Makefile sample/valtest/valtest.exe.config sample/opaquetest/Makefile sample/opaquetest/opaquetest.exe.config sample/gio/Makefile sample/gtk-gio/Makefile" +ac_config_files="$ac_config_files AssemblyInfo.cs Makefile policy.config sources/Makefile parser/Makefile parser/gapi-3.0.pc parser/gapi3-fixup parser/gapi3-parser generator/Makefile generator/gapi3-codegen glib/Makefile glib/glib-sharp-3.0.pc glib/glib-sharp.dll.config gio/Makefile gio/gio-sharp-3.0.pc gio/gio-sharp.dll.config gio/glue/Makefile cairo/AssemblyInfo.cs cairo/Makefile pango/Makefile pango/pango-sharp.dll.config pango/glue/Makefile atk/Makefile atk/atk-sharp.dll.config atk/glue/Makefile gdk/Makefile gdk/gdk-sharp.dll.config gtk/Makefile gtk/gtk-sharp-3.0.pc gtk/gtk-sharp.dll.config gtk/glue/Makefile gtk/gui-thread-check/Makefile gtk/gui-thread-check/profiler/Makefile gtkdotnet/Makefile gtkdotnet/gtk-dotnet.dll.config gtkdotnet/gtk-dotnet-3.0.pc doc/Makefile sample/GtkDemo/Makefile sample/Makefile sample/pixmaps/Makefile sample/test/Makefile sample/valtest/Makefile sample/valtest/valtest.exe.config sample/opaquetest/Makefile sample/opaquetest/opaquetest.exe.config sample/gio/Makefile sample/gtk-gio/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -14393,7 +14521,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by $as_me, which was +This file was extended by gtk-sharp $as_me 2.99.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14459,7 +14587,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -config.status +gtk-sharp config.status 2.99.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -14901,6 +15029,8 @@ do "gtk/gtk-sharp-3.0.pc") CONFIG_FILES="$CONFIG_FILES gtk/gtk-sharp-3.0.pc" ;; "gtk/gtk-sharp.dll.config") CONFIG_FILES="$CONFIG_FILES gtk/gtk-sharp.dll.config" ;; "gtk/glue/Makefile") CONFIG_FILES="$CONFIG_FILES gtk/glue/Makefile" ;; + "gtk/gui-thread-check/Makefile") CONFIG_FILES="$CONFIG_FILES gtk/gui-thread-check/Makefile" ;; + "gtk/gui-thread-check/profiler/Makefile") CONFIG_FILES="$CONFIG_FILES gtk/gui-thread-check/profiler/Makefile" ;; "gtkdotnet/Makefile") CONFIG_FILES="$CONFIG_FILES gtkdotnet/Makefile" ;; "gtkdotnet/gtk-dotnet.dll.config") CONFIG_FILES="$CONFIG_FILES gtkdotnet/gtk-dotnet.dll.config" ;; "gtkdotnet/gtk-dotnet-3.0.pc") CONFIG_FILES="$CONFIG_FILES gtkdotnet/gtk-dotnet-3.0.pc" ;; diff --git a/configure.ac b/configure.ac index 4586a14..c65c12d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,9 @@ -AC_INIT(README) -AC_CANONICAL_SYSTEM +AC_INIT(gtk-sharp, 2.99.1) + +AM_INIT_AUTOMAKE([1.10 no-dist-gzip dist-bzip2 tar-ustar foreign]) +AC_CANONICAL_HOST AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(gtk-sharp, 2.99.0) AM_MAINTAINER_MODE API_VERSION=3.0.0.0 @@ -89,12 +90,6 @@ if test "x$PKG_CONFIG" = "xno"; then AC_MSG_ERROR([You need to install pkg-config]) fi -dnl for use on the build system -BUILD_GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0` -BUILD_GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0` -AC_SUBST(BUILD_GTK_CFLAGS) -AC_SUBST(BUILD_GTK_LIBS) - AC_CHECK_SIZEOF(off_t) OFF_T_FLAGS="-define:OFF_T_$ac_cv_sizeof_off_t" AC_SUBST(OFF_T_FLAGS) @@ -102,6 +97,9 @@ AC_SUBST(OFF_T_FLAGS) MONO_REQUIRED_VERSION=2.8 PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, has_mono=true, has_mono=false) +#libmono and glib required for gui-thread-check profiler module +PKG_CHECK_MODULES(PROFILER, mono-2 glib-2.0) + AC_PATH_PROG(GACUTIL, gacutil, no) if test "x$GACUTIL" = "xno" ; then AC_MSG_ERROR([No gacutil tool found. You need to install either the mono or .Net SDK.]) @@ -196,9 +194,6 @@ PKG_CHECK_MODULES(GTK, gtk+-3.0 >= $GTK_REQUIRED_VERSION) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) -GDK_BACKEND=`pkg-config --variable=target gtk+-3.0` -AC_SUBST(GDK_BACKEND) - AC_PATH_PROG(MDOC, mdoc, no) if test "x$MDOC" = "xno"; then enable_monodoc=no @@ -246,6 +241,8 @@ gtk/Makefile gtk/gtk-sharp-3.0.pc gtk/gtk-sharp.dll.config gtk/glue/Makefile +gtk/gui-thread-check/Makefile +gtk/gui-thread-check/profiler/Makefile gtkdotnet/Makefile gtkdotnet/gtk-dotnet.dll.config gtkdotnet/gtk-dotnet-3.0.pc diff --git a/doc/Makefile.in b/doc/Makefile.in index 98a8986..2455c8b 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = doc DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ ChangeLog @@ -113,8 +112,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -138,7 +135,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -193,6 +189,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -248,11 +246,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/gdk/Display.cs b/gdk/Display.cs index afd5303..02def9f 100644 --- a/gdk/Display.cs +++ b/gdk/Display.cs @@ -80,19 +80,6 @@ namespace Gdk { result [i] = list [i] as Device; return result; } - - [DllImport ("libgdk-win32-3.0-0.dll", CallingConvention = CallingConvention.Cdecl)] - static extern void gdk_display_add_client_message_filter (IntPtr raw, IntPtr message_type, GdkSharp.FilterFuncNative func, IntPtr data); - - public void AddClientMessageFilter (Gdk.Atom message_type, Gdk.FilterFunc func) - { - GdkSharp.FilterFuncWrapper func_wrapper = new GdkSharp.FilterFuncWrapper (func); - if (!Data.Contains ("client_message_filter_func_list")) - Data ["client_message_filter_func_list"] = new ArrayList (); - ArrayList func_list = Data ["client_message_filter_func_list"] as ArrayList; - func_list.Add (func_wrapper); - gdk_display_add_client_message_filter (Handle, message_type == null ? IntPtr.Zero : message_type.Handle, func_wrapper.NativeDelegate, IntPtr.Zero); - } } } diff --git a/gdk/Global.cs b/gdk/Global.cs index ce67b86..a129d90 100644 --- a/gdk/Global.cs +++ b/gdk/Global.cs @@ -174,11 +174,6 @@ namespace Gdk { result [i] = (VisualType) tmp [i]; return result; } - - public static void AddClientMessageFilter (Gdk.Atom message_type, Gdk.FilterFunc func) - { - Gdk.Display.Default.AddClientMessageFilter (message_type, func); - } } } diff --git a/gdk/Makefile.in b/gdk/Makefile.in index 6cfb446..8a4c646 100644 --- a/gdk/Makefile.in +++ b/gdk/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/gdk-sharp.dll.config.in \ $(top_srcdir)/Makefile.include @@ -114,8 +113,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -139,7 +136,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -194,6 +190,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -249,11 +247,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/gdk/Window.cs b/gdk/Window.cs index a5d7781..75c2d82 100644 --- a/gdk/Window.cs +++ b/gdk/Window.cs @@ -25,7 +25,7 @@ namespace Gdk { using System; - using System.Collections; + using System.Collections.Generic; using System.Runtime.InteropServices; public partial class Window { @@ -119,11 +119,12 @@ namespace Gdk { [DllImport ("libgdk-win32-3.0-0.dll", CallingConvention = CallingConvention.Cdecl)] static extern void gdk_window_remove_filter (IntPtr handle, GdkSharp.FilterFuncNative wrapper, IntPtr data); - static Hashtable filter_all_hash; - static Hashtable FilterAllHash { + static IDictionary<FilterFunc, GdkSharp.FilterFuncWrapper> filter_all_hash; + static IDictionary<FilterFunc, GdkSharp.FilterFuncWrapper> FilterAllHash { get { - if (filter_all_hash == null) - filter_all_hash = new Hashtable (); + if (filter_all_hash == null) { + filter_all_hash = new Dictionary<FilterFunc, GdkSharp.FilterFuncWrapper> (); + } return filter_all_hash; } } @@ -137,18 +138,19 @@ namespace Gdk { public static void RemoveFilterForAll (FilterFunc func) { - GdkSharp.FilterFuncWrapper wrapper = FilterAllHash [func] as GdkSharp.FilterFuncWrapper; - if (wrapper == null) - return; - FilterAllHash.Remove (func); - gdk_window_remove_filter (IntPtr.Zero, wrapper.NativeDelegate, IntPtr.Zero); + GdkSharp.FilterFuncWrapper wrapper = null; + if (FilterAllHash.TryGetValue (func, out wrapper)) { + FilterAllHash.Remove (func); + gdk_window_remove_filter (IntPtr.Zero, wrapper.NativeDelegate, IntPtr.Zero); + } } public void AddFilter (FilterFunc function) { - if (!Data.Contains ("filter_func_hash")) - Data ["filter_func_hash"] = new Hashtable (); - Hashtable hash = Data ["filter_func_hash"] as Hashtable; + if (!Data.ContainsKey ("filter_func_hash")) { + Data ["filter_func_hash"] = new Dictionary<FilterFunc, GdkSharp.FilterFuncWrapper> (); + } + var hash = Data ["filter_func_hash"] as Dictionary<FilterFunc, GdkSharp.FilterFuncWrapper>; GdkSharp.FilterFuncWrapper wrapper = new GdkSharp.FilterFuncWrapper (function); hash [function] = wrapper; gdk_window_add_filter (Handle, wrapper.NativeDelegate, IntPtr.Zero); @@ -156,12 +158,12 @@ namespace Gdk { public void RemoveFilter (FilterFunc function) { - Hashtable hash = Data ["filter_func_hash"] as Hashtable; - GdkSharp.FilterFuncWrapper wrapper = hash [function] as GdkSharp.FilterFuncWrapper; - if (wrapper == null) - return; - hash.Remove (function); - gdk_window_remove_filter (Handle, wrapper.NativeDelegate, IntPtr.Zero); + var hash = Data ["filter_func_hash"] as Dictionary<FilterFunc, GdkSharp.FilterFuncWrapper>; + GdkSharp.FilterFuncWrapper wrapper = null; + if (hash.TryGetValue (function, out wrapper)) { + hash.Remove (function); + gdk_window_remove_filter (Handle, wrapper.NativeDelegate, IntPtr.Zero); + } } #if MANLY_ENOUGH_TO_INCLUDE diff --git a/generator/AliasGen.cs b/generator/AliasGen.cs index 19911d6..3134aa7 100644 --- a/generator/AliasGen.cs +++ b/generator/AliasGen.cs @@ -1,30 +1,30 @@ -// GtkSharp.Generation.AliasGen.cs - The Alias type Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2003 Mike Kestner
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class AliasGen : SimpleBase {
-
- public AliasGen (string ctype, string type) : base (ctype, type, String.Empty) {}
- }
-}
-
+// GtkSharp.Generation.AliasGen.cs - The Alias type Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2003 Mike Kestner +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +namespace GtkSharp.Generation { + + using System; + + public class AliasGen : SimpleBase { + + public AliasGen (string ctype, string type) : base (ctype, type, String.Empty) {} + } +} + diff --git a/generator/ArrayParameter.cs b/generator/ArrayParameter.cs new file mode 100644 index 0000000..9b4f803 --- /dev/null +++ b/generator/ArrayParameter.cs @@ -0,0 +1,166 @@ +// GtkSharp.Generation.Parameters.cs - The Parameters Generation Class. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.Xml; + + public class ArrayParameter : Parameter { + + bool null_terminated; + + public ArrayParameter (XmlElement elem) : base (elem) + { + null_terminated = elem.GetAttributeAsBoolean ("null_term_array"); + } + + public override string MarshalType { + get { + if (Generatable is StructBase) + return CSType; + else + return base.MarshalType; + } + } + + bool NullTerminated { + get { + return null_terminated; + } + } + + public override string[] Prepare { + get { + if (CSType == MarshalType) + return new string [0]; + + var result = new List<string> (); + result.Add (String.Format ("int cnt_{0} = {0} == null ? 0 : {0}.Length;", CallName)); + result.Add (String.Format ("{0}[] native_{1} = new {0} [cnt_{1}" + (NullTerminated ? " + 1" : "") + "];", MarshalType.TrimEnd('[', ']'), CallName)); + result.Add (String.Format ("for (int i = 0; i < cnt_{0}; i++)", CallName)); + IGeneratable gen = Generatable; + if (gen is IManualMarshaler) + result.Add (String.Format ("\tnative_{0} [i] = {1};", CallName, (gen as IManualMarshaler).AllocNative (CallName + "[i]"))); + else + result.Add (String.Format ("\tnative_{0} [i] = {1};", CallName, gen.CallByName (CallName + "[i]"))); + + if (NullTerminated) + result.Add (String.Format ("native_{0} [cnt_{0}] = IntPtr.Zero;", CallName)); + return result.ToArray (); + } + } + + public override string CallString { + get { + if (CSType != MarshalType) + return "native_" + CallName; + else + return CallName; + } + } + + public override string[] Finish { + get { + if (CSType == MarshalType) + return new string [0]; + + IGeneratable gen = Generatable; + if (gen is IManualMarshaler) { + string [] result = new string [4]; + result [0] = "for (int i = 0; i < native_" + CallName + ".Length" + (NullTerminated ? " - 1" : "") + "; i++) {"; + result [1] = "\t" + CallName + " [i] = " + Generatable.FromNative ("native_" + CallName + "[i]") + ";"; + result [2] = "\t" + (gen as IManualMarshaler).ReleaseNative ("native_" + CallName + "[i]") + ";"; + result [3] = "}"; + return result; + } + + return new string [0]; + } + } + } + + public class ArrayCountPair : ArrayParameter { + + XmlElement count_elem; + bool invert; + + public ArrayCountPair (XmlElement array_elem, XmlElement count_elem, bool invert) : base (array_elem) + { + this.count_elem = count_elem; + this.invert = invert; + } + + string CountNativeType { + get { + return SymbolTable.Table.GetMarshalType(count_elem.GetAttribute("type")); + } + } + + string CountType { + get { + return SymbolTable.Table.GetCSType(count_elem.GetAttribute("type")); + } + } + + string CountCast { + get { + if (CountType == "int") + return String.Empty; + else + return "(" + CountType + ") "; + } + } + + string CountName { + get { + return SymbolTable.Table.MangleName (count_elem.GetAttribute("name")); + } + } + + string CallCount (string name) + { + string result = CountCast + "(" + name + " == null ? 0 : " + name + ".Length)"; + IGeneratable gen = SymbolTable.Table[count_elem.GetAttribute("type")]; + return gen.CallByName (result); + } + + public override string CallString { + get { + if (invert) + return CallCount (CallName) + ", " + base.CallString; + else + return base.CallString + ", " + CallCount (CallName); + } + } + + public override string NativeSignature { + get { + if (invert) + return CountNativeType + " " + CountName + ", " + MarshalType + " " + Name; + else + return MarshalType + " " + Name + ", " + CountNativeType + " " + CountName; + } + } + } +} diff --git a/generator/BoxedGen.cs b/generator/BoxedGen.cs index a0a3e38..ef79b1c 100644 --- a/generator/BoxedGen.cs +++ b/generator/BoxedGen.cs @@ -1,83 +1,83 @@ -// GtkSharp.Generation.BoxedGen.cs - The Boxed Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.IO;
- using System.Xml;
-
- public class BoxedGen : StructBase {
-
- public BoxedGen (XmlElement ns, XmlElement elem) : base (ns, elem) {}
-
- public override void Generate (GenerationInfo gen_info)
- {
- Method copy = methods["Copy"] as Method;
- Method free = methods["Free"] as Method;
- methods.Remove ("Copy");
- methods.Remove ("Free");
-
- gen_info.CurrentType = QualifiedName;
-
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
- base.Generate (gen_info);
- sw.WriteLine ("\t\tpublic static explicit operator GLib.Value (" + QualifiedName + " boxed)");
- sw.WriteLine ("\t\t{");
-
- sw.WriteLine ("\t\t\tGLib.Value val = GLib.Value.Empty;");
- sw.WriteLine ("\t\t\tval.Init (" + QualifiedName + ".GType);");
- sw.WriteLine ("\t\t\tval.Val = boxed;");
- sw.WriteLine ("\t\t\treturn val;");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\tpublic static explicit operator " + QualifiedName + " (GLib.Value val)");
- sw.WriteLine ("\t\t{");
-
- sw.WriteLine ("\t\t\treturn (" + QualifiedName + ") val.Val;");
- sw.WriteLine ("\t\t}");
-
- if (copy != null && copy.IsDeprecated) {
- sw.WriteLine ();
- sw.WriteLine ("\t\t[Obsolete(\"This is a no-op\")]");
- sw.WriteLine ("\t\tpublic " + QualifiedName + " Copy() {");
- sw.WriteLine ("\t\t\treturn this;");
- sw.WriteLine ("\t\t}");
- }
-
- if (free != null && free.IsDeprecated) {
- sw.WriteLine ();
- sw.WriteLine ("\t\t[Obsolete(\"This is a no-op\")]");
- sw.WriteLine ("\t\tpublic " + QualifiedName + " Free () {");
- sw.WriteLine ("\t\t\treturn this;");
- sw.WriteLine ("\t\t}");
- }
-
- sw.WriteLine ("#endregion");
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
- sw.Close ();
- gen_info.Writer = null;
- Statistics.BoxedCount++;
- }
- }
-}
-
+// GtkSharp.Generation.BoxedGen.cs - The Boxed Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +namespace GtkSharp.Generation { + + using System; + using System.IO; + using System.Xml; + + public class BoxedGen : StructBase { + + public BoxedGen (XmlElement ns, XmlElement elem) : base (ns, elem) {} + + public override void Generate (GenerationInfo gen_info) + { + Method copy = GetMethod ("Copy"); + Method free = GetMethod ("Free"); + Methods.Remove ("Copy"); + Methods.Remove ("Free"); + + gen_info.CurrentType = QualifiedName; + + StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name); + base.Generate (gen_info); + sw.WriteLine ("\t\tpublic static explicit operator GLib.Value (" + QualifiedName + " boxed)"); + sw.WriteLine ("\t\t{"); + + sw.WriteLine ("\t\t\tGLib.Value val = GLib.Value.Empty;"); + sw.WriteLine ("\t\t\tval.Init (" + QualifiedName + ".GType);"); + sw.WriteLine ("\t\t\tval.Val = boxed;"); + sw.WriteLine ("\t\t\treturn val;"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\tpublic static explicit operator " + QualifiedName + " (GLib.Value val)"); + sw.WriteLine ("\t\t{"); + + sw.WriteLine ("\t\t\treturn (" + QualifiedName + ") val.Val;"); + sw.WriteLine ("\t\t}"); + + if (copy != null && copy.IsDeprecated) { + sw.WriteLine (); + sw.WriteLine ("\t\t[Obsolete(\"This is a no-op\")]"); + sw.WriteLine ("\t\tpublic " + QualifiedName + " Copy() {"); + sw.WriteLine ("\t\t\treturn this;"); + sw.WriteLine ("\t\t}"); + } + + if (free != null && free.IsDeprecated) { + sw.WriteLine (); + sw.WriteLine ("\t\t[Obsolete(\"This is a no-op\")]"); + sw.WriteLine ("\t\tpublic " + QualifiedName + " Free () {"); + sw.WriteLine ("\t\t\treturn this;"); + sw.WriteLine ("\t\t}"); + } + + sw.WriteLine ("#endregion"); + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + sw.Close (); + gen_info.Writer = null; + Statistics.BoxedCount++; + } + } +} + diff --git a/generator/ByRefGen.cs b/generator/ByRefGen.cs index 7a2641e..232c325 100644 --- a/generator/ByRefGen.cs +++ b/generator/ByRefGen.cs @@ -1,63 +1,63 @@ -// GtkSharp.Generation.ByRefGen.cs - The ByRef type Generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2003 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class ByRefGen : SimpleBase, IManualMarshaler {
-
- public ByRefGen (string ctype, string type) : base (ctype, type, type + ".Empty") {}
-
- public override string MarshalType {
- get {
- return "IntPtr";
- }
- }
-
- public override string CallByName (string var_name)
- {
- return "native_" + var_name;
- }
-
- public string AllocNative ()
- {
- return "Marshal.AllocHGlobal (Marshal.SizeOf (typeof (" + QualifiedName + ")))";
- }
-
- public string AllocNative (string var_name)
- {
- return "GLib.Marshaller.StructureToPtrAlloc (" + var_name + ")";
- }
-
- public override string FromNative (string var_name)
- {
- return String.Format ("({0}) Marshal.PtrToStructure ({1}, typeof ({0}))", QualifiedName, var_name);
- }
-
- public string ReleaseNative (string var_name)
- {
- return "Marshal.FreeHGlobal (" + var_name + ")";
- }
- }
-}
-
+// GtkSharp.Generation.ByRefGen.cs - The ByRef type Generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public class ByRefGen : SimpleBase, IManualMarshaler { + + public ByRefGen (string ctype, string type) : base (ctype, type, type + ".Empty") {} + + public override string MarshalType { + get { + return "IntPtr"; + } + } + + public override string CallByName (string var_name) + { + return "native_" + var_name; + } + + public string AllocNative () + { + return "Marshal.AllocHGlobal (Marshal.SizeOf (typeof (" + QualifiedName + ")))"; + } + + public string AllocNative (string var_name) + { + return "GLib.Marshaller.StructureToPtrAlloc (" + var_name + ")"; + } + + public override string FromNative (string var_name) + { + return String.Format ("({0}) Marshal.PtrToStructure ({1}, typeof ({0}))", QualifiedName, var_name); + } + + public string ReleaseNative (string var_name) + { + return "Marshal.FreeHGlobal (" + var_name + ")"; + } + } +} + diff --git a/generator/ChildProperty.cs b/generator/ChildProperty.cs index fe361ed..a3041d0 100644 --- a/generator/ChildProperty.cs +++ b/generator/ChildProperty.cs @@ -1,45 +1,45 @@ -// GtkSharp.Generation.ChildProperty.cs - GtkContainer child properties
-//
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class ChildProperty : Property {
-
- public ChildProperty (XmlElement elem, ClassBase container_type) : base (elem, container_type) {}
-
- protected override string PropertyAttribute (string qpname) {
- return "[Gtk.ChildProperty (" + qpname + ")]";
- }
-
- protected override string RawGetter (string qpname) {
- return "parent.ChildGetProperty (child, " + qpname + ")";
- }
-
- protected override string RawSetter (string qpname) {
- return "parent.ChildSetProperty(child, " + qpname + ", val)";
- }
-
- }
-}
-
+// GtkSharp.Generation.ChildProperty.cs - GtkContainer child properties +// +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Xml; + + public class ChildProperty : Property { + + public ChildProperty (XmlElement elem, ClassBase container_type) : base (elem, container_type) {} + + protected override string PropertyAttribute (string qpname) { + return "[Gtk.ChildProperty (" + qpname + ")]"; + } + + protected override string RawGetter (string qpname) { + return "parent.ChildGetProperty (child, " + qpname + ")"; + } + + protected override string RawSetter (string qpname) { + return "parent.ChildSetProperty(child, " + qpname + ", val)"; + } + + } +} + diff --git a/generator/ClassBase.cs b/generator/ClassBase.cs index 95d5df8..8c77764 100644 --- a/generator/ClassBase.cs +++ b/generator/ClassBase.cs @@ -26,27 +26,34 @@ namespace GtkSharp.Generation { using System; using System.Collections; + using System.Collections.Generic; using System.IO; using System.Xml; public abstract class ClassBase : GenBase { - protected Hashtable props = new Hashtable(); - protected Hashtable fields = new Hashtable(); - protected Hashtable methods = new Hashtable(); - protected ArrayList interfaces = new ArrayList(); - protected ArrayList managed_interfaces = new ArrayList(); - protected ArrayList ctors = new ArrayList(); + private IDictionary<string, Property> props = new Dictionary<string, Property> (); + private IDictionary<string, ObjectField> fields = new Dictionary<string, ObjectField> (); + private IDictionary<string, Method> methods = new Dictionary<string, Method> (); + protected IList<string> interfaces = new List<string>(); + protected IList<string> managed_interfaces = new List<string>(); + protected IList<Ctor> ctors = new List<Ctor>(); private bool ctors_initted = false; - private Hashtable clash_map; + private Dictionary<string, Ctor> clash_map; private bool deprecated = false; private bool isabstract = false; - public Hashtable Methods { + public IDictionary<string, Method> Methods { get { return methods; } - } + } + + public IDictionary<string, Property> Properties { + get { + return props; + } + } public ClassBase Parent { get { @@ -61,20 +68,13 @@ namespace GtkSharp.Generation { protected ClassBase (XmlElement ns, XmlElement elem) : base (ns, elem) { - if (elem.HasAttribute ("deprecated")) { - string attr = elem.GetAttribute ("deprecated"); - deprecated = attr == "1" || attr == "true"; - } - - if (elem.HasAttribute ("abstract")) { - string attr = elem.GetAttribute ("abstract"); - isabstract = attr == "1" || attr == "true"; - } + deprecated = elem.GetAttributeAsBoolean ("deprecated"); + isabstract = elem.GetAttributeAsBoolean ("abstract"); foreach (XmlNode node in elem.ChildNodes) { if (!(node is XmlElement)) continue; XmlElement member = (XmlElement) node; - if (member.HasAttribute ("hidden")) + if (member.GetAttributeAsBoolean ("hidden")) continue; string name; @@ -227,7 +227,7 @@ namespace GtkSharp.Generation { if (node.Name != "interface") continue; XmlElement element = (XmlElement) node; - if (element.HasAttribute ("hidden")) + if (element.GetAttributeAsBoolean ("hidden")) continue; if (element.HasAttribute ("cname")) interfaces.Add (element.GetAttribute ("cname")); @@ -247,8 +247,8 @@ namespace GtkSharp.Generation { (fields != null) && fields.ContainsKey(mname.Substring(3)))); } - public void GenMethods (GenerationInfo gen_info, Hashtable collisions, ClassBase implementor) - { + public void GenMethods (GenerationInfo gen_info, IDictionary<string, bool> collisions, ClassBase implementor) + { if (methods == null) return; @@ -257,7 +257,7 @@ namespace GtkSharp.Generation { continue; string oname = null, oprotection = null; - if (collisions != null && collisions.Contains (method.Name)) { + if (collisions != null && collisions.ContainsKey (method.Name)) { oname = method.Name; oprotection = method.Protection; method.Name = QualifiedName + "." + method.Name; @@ -273,12 +273,16 @@ namespace GtkSharp.Generation { public Method GetMethod (string name) { - return (Method) methods[name]; + Method m = null; + methods.TryGetValue (name, out m); + return m; } public Property GetProperty (string name) { - return (Property) props[name]; + Property prop = null; + props.TryGetValue (name, out prop); + return prop; } public Method GetMethodRecursively (string name) @@ -339,7 +343,7 @@ namespace GtkSharp.Generation { return false; } - public ArrayList Ctors { get { return ctors; } } + public IList<Ctor> Ctors { get { return ctors; } } bool HasStaticCtor (string name) { @@ -361,12 +365,12 @@ namespace GtkSharp.Generation { if (Parent != null) Parent.InitializeCtors (); - ArrayList valid_ctors = new ArrayList(); - clash_map = new Hashtable(); + var valid_ctors = new List<Ctor>(); + clash_map = new Dictionary<string, Ctor>(); foreach (Ctor ctor in ctors) { - if (clash_map.Contains (ctor.Signature.Types)) { - Ctor clash = clash_map [ctor.Signature.Types] as Ctor; + if (clash_map.ContainsKey (ctor.Signature.Types)) { + Ctor clash = clash_map [ctor.Signature.Types]; Ctor alter = ctor.Preferred ? clash : ctor; alter.IsStatic = true; if (Parent != null && Parent.HasStaticCtor (alter.StaticName)) diff --git a/generator/ClassGen.cs b/generator/ClassGen.cs index 69841f6..f0cf6a3 100644 --- a/generator/ClassGen.cs +++ b/generator/ClassGen.cs @@ -1,93 +1,93 @@ -// GtkSharp.Generation.ClassGen.cs - The Class Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Text;
- using System.Xml;
-
- public class ClassGen : ClassBase {
-
- public ClassGen (XmlElement ns, XmlElement elem) : base (ns, elem) {}
-
- public override string AssignToName {
- get {
- return String.Empty;
- }
- }
-
- public override string MarshalType {
- get {
- return String.Empty;
- }
- }
-
- public override string CallByName ()
- {
- return String.Empty;
- }
-
- public override string CallByName (string var)
- {
- return String.Empty;
- }
-
- public override string FromNative (string var)
- {
- return String.Empty;
- }
-
- public override void Generate (GenerationInfo gen_info)
- {
- gen_info.CurrentType = QualifiedName;
-
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name);
-
- sw.WriteLine ("namespace " + NS + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
- sw.WriteLine ("\tusing System.Runtime.InteropServices;");
- sw.WriteLine ();
-
- sw.WriteLine ("#region Autogenerated code");
- if (IsDeprecated)
- sw.WriteLine ("\t[Obsolete]");
- sw.Write ("\t{0} partial class " + Name, IsInternal ? "internal" : "public");
- sw.WriteLine (" {");
- sw.WriteLine ();
-
- GenProperties (gen_info, null);
- GenMethods (gen_info, null, null);
-
- sw.WriteLine ("#endregion");
-
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
-
- sw.Close ();
- gen_info.Writer = null;
- }
- }
-}
-
+// GtkSharp.Generation.ClassGen.cs - The Class Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Text; + using System.Xml; + + public class ClassGen : ClassBase { + + public ClassGen (XmlElement ns, XmlElement elem) : base (ns, elem) {} + + public override string AssignToName { + get { + return String.Empty; + } + } + + public override string MarshalType { + get { + return String.Empty; + } + } + + public override string CallByName () + { + return String.Empty; + } + + public override string CallByName (string var) + { + return String.Empty; + } + + public override string FromNative (string var) + { + return String.Empty; + } + + public override void Generate (GenerationInfo gen_info) + { + gen_info.CurrentType = QualifiedName; + + StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name); + + sw.WriteLine ("namespace " + NS + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + sw.WriteLine ("\tusing System.Runtime.InteropServices;"); + sw.WriteLine (); + + sw.WriteLine ("#region Autogenerated code"); + if (IsDeprecated) + sw.WriteLine ("\t[Obsolete]"); + sw.Write ("\t{0} partial class " + Name, IsInternal ? "internal" : "public"); + sw.WriteLine (" {"); + sw.WriteLine (); + + GenProperties (gen_info, null); + GenMethods (gen_info, null, null); + + sw.WriteLine ("#endregion"); + + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + + sw.Close (); + gen_info.Writer = null; + } + } +} + diff --git a/generator/CodeGenerator.cs b/generator/CodeGenerator.cs index 3be4ce2..e3d05b5 100644 --- a/generator/CodeGenerator.cs +++ b/generator/CodeGenerator.cs @@ -1,121 +1,121 @@ -// GtkSharp.Generation.CodeGenerator.cs - The main code generation engine.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2004 Novell Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.Xml;
-
- public class CodeGenerator {
-
- public static int Main (string[] args)
- {
- if (args.Length < 2) {
- Console.WriteLine ("Usage: codegen --generate <filename1...>");
- return 0;
- }
-
- bool generate = false;
- string dir = "";
- string assembly_name = "";
- string glue_filename = "";
- string glue_includes = "";
- string gluelib_name = "";
-
- SymbolTable table = SymbolTable.Table;
- ArrayList gens = new ArrayList ();
- foreach (string arg in args) {
- if (arg.StartsWith ("--customdir=")) {
- Console.WriteLine ("Using .custom files is not supported anymore, use partial classes instead.");
- return 0;
- }
- string filename = arg;
- if (arg == "--generate") {
- generate = true;
- continue;
- } else if (arg == "--include") {
- generate = false;
- continue;
- } else if (arg.StartsWith ("-I:")) {
- generate = false;
- filename = filename.Substring (3);
- } else if (arg.StartsWith ("--outdir=")) {
- generate = false;
- dir = arg.Substring (9);
- continue;
- } else if (arg.StartsWith ("--assembly-name=")) {
- generate = false;
- assembly_name = arg.Substring (16);
- continue;
- } else if (arg.StartsWith ("--glue-filename=")) {
- generate = false;
- glue_filename = arg.Substring (16);
- continue;
- } else if (arg.StartsWith ("--glue-includes=")) {
- generate = false;
- glue_includes = arg.Substring (16);
- continue;
- } else if (arg.StartsWith ("--gluelib-name=")) {
- generate = false;
- gluelib_name = arg.Substring (15);
- continue;
- }
-
- Parser p = new Parser ();
- IGeneratable[] curr_gens = p.Parse (filename);
- table.AddTypes (curr_gens);
- if (generate)
- gens.AddRange (curr_gens);
- }
-
- // Now that everything is loaded, validate all the to-be-
- // generated generatables and then remove the invalid ones.
- ArrayList invalids = new ArrayList ();
- foreach (IGeneratable gen in gens) {
- if (!gen.Validate ())
- invalids.Add (gen);
- }
- foreach (IGeneratable gen in invalids)
- gens.Remove (gen);
-
- GenerationInfo gen_info = null;
- if (dir != "" || assembly_name != "" || glue_filename != "" || glue_includes != "" || gluelib_name != "")
- gen_info = new GenerationInfo (dir, assembly_name, glue_filename, glue_includes, gluelib_name);
-
- foreach (IGeneratable gen in gens) {
- if (gen_info == null)
- gen.Generate ();
- else
- gen.Generate (gen_info);
- }
-
- ObjectGen.GenerateMappers ();
-
- if (gen_info != null)
- gen_info.CloseGlueWriter ();
-
- Statistics.Report();
- return 0;
- }
- }
-}
+// GtkSharp.Generation.CodeGenerator.cs - The main code generation engine. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2004 Novell Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.Xml; + + public class CodeGenerator { + + public static int Main (string[] args) + { + if (args.Length < 2) { + Console.WriteLine ("Usage: codegen --generate <filename1...>"); + return 0; + } + + bool generate = false; + string dir = ""; + string assembly_name = ""; + string glue_filename = ""; + string glue_includes = ""; + string gluelib_name = ""; + + SymbolTable table = SymbolTable.Table; + var gens = new List<IGeneratable> (); + foreach (string arg in args) { + if (arg.StartsWith ("--customdir=")) { + Console.WriteLine ("Using .custom files is not supported anymore, use partial classes instead."); + return 0; + } + string filename = arg; + if (arg == "--generate") { + generate = true; + continue; + } else if (arg == "--include") { + generate = false; + continue; + } else if (arg.StartsWith ("-I:")) { + generate = false; + filename = filename.Substring (3); + } else if (arg.StartsWith ("--outdir=")) { + generate = false; + dir = arg.Substring (9); + continue; + } else if (arg.StartsWith ("--assembly-name=")) { + generate = false; + assembly_name = arg.Substring (16); + continue; + } else if (arg.StartsWith ("--glue-filename=")) { + generate = false; + glue_filename = arg.Substring (16); + continue; + } else if (arg.StartsWith ("--glue-includes=")) { + generate = false; + glue_includes = arg.Substring (16); + continue; + } else if (arg.StartsWith ("--gluelib-name=")) { + generate = false; + gluelib_name = arg.Substring (15); + continue; + } + + Parser p = new Parser (); + IGeneratable[] curr_gens = p.Parse (filename); + table.AddTypes (curr_gens); + if (generate) + gens.AddRange (curr_gens); + } + + // Now that everything is loaded, validate all the to-be- + // generated generatables and then remove the invalid ones. + var invalids = new List<IGeneratable> (); + foreach (IGeneratable gen in gens) { + if (!gen.Validate ()) + invalids.Add (gen); + } + foreach (IGeneratable gen in invalids) + gens.Remove (gen); + + GenerationInfo gen_info = null; + if (dir != "" || assembly_name != "" || glue_filename != "" || glue_includes != "" || gluelib_name != "") + gen_info = new GenerationInfo (dir, assembly_name, glue_filename, glue_includes, gluelib_name); + + foreach (IGeneratable gen in gens) { + if (gen_info == null) + gen.Generate (); + else + gen.Generate (gen_info); + } + + ObjectGen.GenerateMappers (); + + if (gen_info != null) + gen_info.CloseGlueWriter (); + + Statistics.Report(); + return 0; + } + } +} diff --git a/generator/ConstFilenameGen.cs b/generator/ConstFilenameGen.cs index 562ab9c..f094aa1 100644 --- a/generator/ConstFilenameGen.cs +++ b/generator/ConstFilenameGen.cs @@ -1,52 +1,52 @@ -// ConstFilenameGen.cs - The Const Filename type Generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class ConstFilenameGen : SimpleBase, IManualMarshaler {
-
- public ConstFilenameGen (string ctype) : base (ctype, "string", "null") {}
-
- public override string MarshalType {
- get {
- return "IntPtr";
- }
- }
-
- public override string FromNative (string var)
- {
- return "GLib.Marshaller.FilenamePtrToString (" + var + ")";
- }
-
- public string AllocNative (string managed_var)
- {
- return "GLib.Marshaller.StringToFilenamePtr (" + managed_var + ")";
- }
-
- public string ReleaseNative (string native_var)
- {
- return "GLib.Marshaller.Free (" + native_var + ")";
- }
- }
-}
-
+// ConstFilenameGen.cs - The Const Filename type Generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public class ConstFilenameGen : SimpleBase, IManualMarshaler { + + public ConstFilenameGen (string ctype) : base (ctype, "string", "null") {} + + public override string MarshalType { + get { + return "IntPtr"; + } + } + + public override string FromNative (string var) + { + return "GLib.Marshaller.FilenamePtrToString (" + var + ")"; + } + + public string AllocNative (string managed_var) + { + return "GLib.Marshaller.StringToFilenamePtr (" + managed_var + ")"; + } + + public string ReleaseNative (string native_var) + { + return "GLib.Marshaller.Free (" + native_var + ")"; + } + } +} + diff --git a/generator/ConstStringGen.cs b/generator/ConstStringGen.cs index 72fc887..a0c0958 100644 --- a/generator/ConstStringGen.cs +++ b/generator/ConstStringGen.cs @@ -1,54 +1,54 @@ -// GtkSharp.Generation.ConstStringGen.cs - The Const String type Generatable.
-//
-// Author: Rachel Hestilow <rachel@nullenvoid.com>
-// Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2003 Rachel Hestilow
-// Copyright (c) 2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class ConstStringGen : SimpleBase, IManualMarshaler {
-
- public ConstStringGen (string ctype) : base (ctype, "string", "null") {}
-
- public override string MarshalType {
- get {
- return "IntPtr";
- }
- }
-
- public override string FromNative (string var)
- {
- return "GLib.Marshaller.Utf8PtrToString (" + var + ")";
- }
-
- public string AllocNative (string managed_var)
- {
- return "GLib.Marshaller.StringToPtrGStrdup (" + managed_var + ")";
- }
-
- public string ReleaseNative (string native_var)
- {
- return "GLib.Marshaller.Free (" + native_var + ")";
- }
- }
-}
-
+// GtkSharp.Generation.ConstStringGen.cs - The Const String type Generatable. +// +// Author: Rachel Hestilow <rachel@nullenvoid.com> +// Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2003 Rachel Hestilow +// Copyright (c) 2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public class ConstStringGen : SimpleBase, IManualMarshaler { + + public ConstStringGen (string ctype) : base (ctype, "string", "null") {} + + public override string MarshalType { + get { + return "IntPtr"; + } + } + + public override string FromNative (string var) + { + return "GLib.Marshaller.Utf8PtrToString (" + var + ")"; + } + + public string AllocNative (string managed_var) + { + return "GLib.Marshaller.StringToPtrGStrdup (" + managed_var + ")"; + } + + public string ReleaseNative (string native_var) + { + return "GLib.Marshaller.Free (" + native_var + ")"; + } + } +} + diff --git a/generator/Ctor.cs b/generator/Ctor.cs index 53d5836..9747b23 100644 --- a/generator/Ctor.cs +++ b/generator/Ctor.cs @@ -1,165 +1,164 @@ -// GtkSharp.Generation.Ctor.cs - The Constructor Generation Class.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2004-2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class Ctor : MethodBase {
-
- private bool preferred;
- private string name;
- private bool needs_chaining = false;
-
- public Ctor (XmlElement elem, ClassBase implementor) : base (elem, implementor)
- {
- if (elem.HasAttribute ("preferred"))
- preferred = true;
- if (implementor is ObjectGen)
- needs_chaining = true;
- name = implementor.Name;
- }
-
- public bool Preferred {
- get { return preferred; }
- set { preferred = value; }
- }
-
- public string StaticName {
- get {
- if (!IsStatic)
- return String.Empty;
-
- if (Name != null && Name != String.Empty)
- return Name;
-
- string[] toks = CName.Substring(CName.IndexOf("new")).Split ('_');
- string result = String.Empty;
-
- foreach (string tok in toks)
- result += tok.Substring(0,1).ToUpper() + tok.Substring(1);
- return result;
- }
- }
-
- void GenerateImport (StreamWriter sw)
- {
- sw.WriteLine("\t\t[DllImport(\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]");
- sw.WriteLine("\t\tstatic extern " + Safety + "IntPtr " + CName + "(" + Parameters.ImportSignature + ");");
- sw.WriteLine();
- }
-
- void GenerateStatic (GenerationInfo gen_info)
- {
- StreamWriter sw = gen_info.Writer;
- sw.WriteLine("\t\t" + Protection + " static " + Safety + Modifiers + name + " " + StaticName + "(" + Signature + ")");
- sw.WriteLine("\t\t{");
-
- Body.Initialize(gen_info, false, false, "");
-
- sw.Write("\t\t\t" + name + " result = ");
- if (container_type is StructBase)
- sw.Write ("{0}.New (", name);
- else
- sw.Write ("new {0} (", name);
- sw.WriteLine (CName + "(" + Body.GetCallString (false) + "));");
- Body.Finish (sw, "");
- Body.HandleException (sw, "");
- sw.WriteLine ("\t\t\treturn result;");
- }
-
- public void Generate (GenerationInfo gen_info)
- {
- StreamWriter sw = gen_info.Writer;
- gen_info.CurrentMember = CName;
-
- GenerateImport (sw);
-
- if (IsStatic)
- GenerateStatic (gen_info);
- else {
- sw.WriteLine("\t\t{0} {1}{2} ({3}) {4}", Protection, Safety, name, Signature.ToString(), needs_chaining ? ": base (IntPtr.Zero)" : "");
- sw.WriteLine("\t\t{");
-
- if (needs_chaining) {
- sw.WriteLine ("\t\t\tif (GetType () != typeof (" + name + ")) {");
-
- if (Parameters.Count == 0) {
- sw.WriteLine ("\t\t\t\tCreateNativeObject (new string [0], new GLib.Value[0]);");
- sw.WriteLine ("\t\t\t\treturn;");
- } else {
- ArrayList names = new ArrayList ();
- ArrayList values = new ArrayList ();
- for (int i = 0; i < Parameters.Count; i++) {
- Parameter p = Parameters[i];
- if (container_type.GetPropertyRecursively (p.StudlyName) != null) {
- names.Add (p.Name);
- values.Add (p.Name);
- } else if (p.PropertyName != String.Empty) {
- names.Add (p.PropertyName);
- values.Add (p.Name);
- }
- }
-
- if (names.Count == Parameters.Count) {
- sw.WriteLine ("\t\t\t\tArrayList vals = new ArrayList();");
- sw.WriteLine ("\t\t\t\tArrayList names = new ArrayList();");
- for (int i = 0; i < names.Count; i++) {
- Parameter p = Parameters [i];
- string indent = "\t\t\t\t";
- if (p.Generatable is ClassBase && !(p.Generatable is StructBase)) {
- sw.WriteLine (indent + "if (" + p.Name + " != null) {");
- indent += "\t";
- }
- sw.WriteLine (indent + "names.Add (\"" + names [i] + "\");");
- sw.WriteLine (indent + "vals.Add (new GLib.Value (" + values[i] + "));");
-
- if (p.Generatable is ClassBase && !(p.Generatable is StructBase))
- sw.WriteLine ("\t\t\t\t}");
- }
-
- sw.WriteLine ("\t\t\t\tCreateNativeObject ((string[])names.ToArray (typeof (string)), (GLib.Value[])vals.ToArray (typeof (GLib.Value)));");
- sw.WriteLine ("\t\t\t\treturn;");
- } else
- sw.WriteLine ("\t\t\t\tthrow new InvalidOperationException (\"Can't override this constructor.\");");
- }
-
- sw.WriteLine ("\t\t\t}");
- }
-
- Body.Initialize(gen_info, false, false, "");
- sw.WriteLine("\t\t\t{0} = {1}({2});", container_type.AssignToName, CName, Body.GetCallString (false));
- Body.Finish (sw, "");
- Body.HandleException (sw, "");
- }
-
- sw.WriteLine("\t\t}");
- sw.WriteLine();
-
- Statistics.CtorCount++;
- }
- }
-}
-
+// GtkSharp.Generation.Ctor.cs - The Constructor Generation Class. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004-2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.IO; + using System.Xml; + + public class Ctor : MethodBase { + + private bool preferred; + private string name; + private bool needs_chaining = false; + + public Ctor (XmlElement elem, ClassBase implementor) : base (elem, implementor) + { + preferred = elem.GetAttributeAsBoolean ("preferred"); + if (implementor is ObjectGen) + needs_chaining = true; + name = implementor.Name; + } + + public bool Preferred { + get { return preferred; } + set { preferred = value; } + } + + public string StaticName { + get { + if (!IsStatic) + return String.Empty; + + if (Name != null && Name != String.Empty) + return Name; + + string[] toks = CName.Substring(CName.IndexOf("new")).Split ('_'); + string result = String.Empty; + + foreach (string tok in toks) + result += tok.Substring(0,1).ToUpper() + tok.Substring(1); + return result; + } + } + + void GenerateImport (StreamWriter sw) + { + sw.WriteLine("\t\t[DllImport(\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]"); + sw.WriteLine("\t\tstatic extern " + Safety + "IntPtr " + CName + "(" + Parameters.ImportSignature + ");"); + sw.WriteLine(); + } + + void GenerateStatic (GenerationInfo gen_info) + { + StreamWriter sw = gen_info.Writer; + sw.WriteLine("\t\t" + Protection + " static " + Safety + Modifiers + name + " " + StaticName + "(" + Signature + ")"); + sw.WriteLine("\t\t{"); + + Body.Initialize(gen_info, false, false, ""); + + sw.Write("\t\t\t" + name + " result = "); + if (container_type is StructBase) + sw.Write ("{0}.New (", name); + else + sw.Write ("new {0} (", name); + sw.WriteLine (CName + "(" + Body.GetCallString (false) + "));"); + Body.Finish (sw, ""); + Body.HandleException (sw, ""); + sw.WriteLine ("\t\t\treturn result;"); + } + + public void Generate (GenerationInfo gen_info) + { + StreamWriter sw = gen_info.Writer; + gen_info.CurrentMember = CName; + + GenerateImport (sw); + + if (IsStatic) + GenerateStatic (gen_info); + else { + sw.WriteLine("\t\t{0} {1}{2} ({3}) {4}", Protection, Safety, name, Signature.ToString(), needs_chaining ? ": base (IntPtr.Zero)" : ""); + sw.WriteLine("\t\t{"); + + if (needs_chaining) { + sw.WriteLine ("\t\t\tif (GetType () != typeof (" + name + ")) {"); + + if (Parameters.Count == 0) { + sw.WriteLine ("\t\t\t\tCreateNativeObject (new string [0], new GLib.Value[0]);"); + sw.WriteLine ("\t\t\t\treturn;"); + } else { + var names = new List<string> (); + var values = new List<string> (); + for (int i = 0; i < Parameters.Count; i++) { + Parameter p = Parameters[i]; + if (container_type.GetPropertyRecursively (p.StudlyName) != null) { + names.Add (p.Name); + values.Add (p.Name); + } else if (p.PropertyName != String.Empty) { + names.Add (p.PropertyName); + values.Add (p.Name); + } + } + + if (names.Count == Parameters.Count) { + sw.WriteLine ("\t\t\t\tvar vals = new List<GLib.Value> ();"); + sw.WriteLine ("\t\t\t\tvar names = new List<string> ();"); + for (int i = 0; i < names.Count; i++) { + Parameter p = Parameters [i]; + string indent = "\t\t\t\t"; + if (p.Generatable is ClassBase && !(p.Generatable is StructBase)) { + sw.WriteLine (indent + "if (" + p.Name + " != null) {"); + indent += "\t"; + } + sw.WriteLine (indent + "names.Add (\"" + names [i] + "\");"); + sw.WriteLine (indent + "vals.Add (new GLib.Value (" + values[i] + "));"); + + if (p.Generatable is ClassBase && !(p.Generatable is StructBase)) + sw.WriteLine ("\t\t\t\t}"); + } + + sw.WriteLine ("\t\t\t\tCreateNativeObject (names.ToArray (), vals.ToArray ());"); + sw.WriteLine ("\t\t\t\treturn;"); + } else + sw.WriteLine ("\t\t\t\tthrow new InvalidOperationException (\"Can't override this constructor.\");"); + } + + sw.WriteLine ("\t\t\t}"); + } + + Body.Initialize(gen_info, false, false, ""); + sw.WriteLine("\t\t\t{0} = {1}({2});", container_type.AssignToName, CName, Body.GetCallString (false)); + Body.Finish (sw, ""); + Body.HandleException (sw, ""); + } + + sw.WriteLine("\t\t}"); + sw.WriteLine(); + + Statistics.CtorCount++; + } + } +} + diff --git a/generator/EnumGen.cs b/generator/EnumGen.cs index ca78188..94e97c7 100644 --- a/generator/EnumGen.cs +++ b/generator/EnumGen.cs @@ -1,133 +1,133 @@ -// GtkSharp.Generation.EnumGen.cs - The Enumeration Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001 Mike Kestner
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
- using System.Text.RegularExpressions;
-
- public class EnumGen : GenBase {
-
- string enum_type = String.Empty;
- ArrayList members = new ArrayList ();
-
- public EnumGen (XmlElement ns, XmlElement elem) : base (ns, elem)
- {
- foreach (XmlElement member in elem.ChildNodes) {
- if (member.Name != "member")
- continue;
-
- string result = "\t\t" + member.GetAttribute("name");
- if (member.HasAttribute ("value")) {
- string value = member.GetAttribute ("value").Trim ();
- foreach (Match match in Regex.Matches (value, "[0-9]+([UL]{1,2})", RegexOptions.IgnoreCase)) {
- switch (match.Groups[1].Value.ToUpper ()) {
- case "U": enum_type = " : uint"; break;
- case "L": enum_type = " : long"; break;
- case "UL": enum_type = " : ulong"; break;
- }
- }
- result += " = " + value;
- }
- members.Add (result + ",");
- }
- if (elem.HasAttribute ("enum_type"))
- enum_type = " : " + elem.GetAttribute ("enum_type");
- }
-
- public override bool Validate ()
- {
- return true;
- }
-
- public override string DefaultValue {
- get {
- return "(" + QualifiedName + ") 0";
- }
- }
-
- public override string MarshalType {
- get {
- return "int";
- }
- }
-
- public override string CallByName (string var_name)
- {
- return "(int) " + var_name;
- }
-
- public override string FromNative(string var)
- {
- return "(" + QualifiedName + ") " + var;
- }
-
- public override void Generate (GenerationInfo gen_info)
- {
- StreamWriter sw = gen_info.OpenStream (Name);
-
- sw.WriteLine ("namespace " + NS + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
- sw.WriteLine ("\tusing System.Runtime.InteropServices;");
- sw.WriteLine ();
-
- sw.WriteLine ("#region Autogenerated code");
-
- if (Elem.GetAttribute("type") == "flags")
- sw.WriteLine ("\t[Flags]");
- if (Elem.HasAttribute("gtype"))
- sw.WriteLine ("\t[GLib.GType (typeof (" + NS + "." + Name + "GType))]");
-
- string access = IsInternal ? "internal" : "public";
- sw.WriteLine ("\t" + access + " enum " + Name + enum_type + " {");
- sw.WriteLine ();
-
- foreach (string member in members)
- sw.WriteLine (member);
-
- sw.WriteLine ("\t}");
-
- if (Elem.HasAttribute ("gtype")) {
- sw.WriteLine ();
- sw.WriteLine ("\tinternal class " + Name + "GType {");
- sw.WriteLine ("\t\t[DllImport (\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]");
- sw.WriteLine ("\t\tstatic extern IntPtr " + Elem.GetAttribute ("gtype") + " ();");
- sw.WriteLine ();
- sw.WriteLine ("\t\tpublic static GLib.GType GType {");
- sw.WriteLine ("\t\t\tget {");
- sw.WriteLine ("\t\t\t\treturn new GLib.GType (" + Elem.GetAttribute ("gtype") + " ());");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ("\t}");
- }
-
- sw.WriteLine ("#endregion");
- sw.WriteLine ("}");
- sw.Close ();
- Statistics.EnumCount++;
- }
- }
-}
-
+// GtkSharp.Generation.EnumGen.cs - The Enumeration Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001 Mike Kestner +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.IO; + using System.Xml; + using System.Text.RegularExpressions; + + public class EnumGen : GenBase { + + string enum_type = String.Empty; + IList<string> members = new List<string> (); + + public EnumGen (XmlElement ns, XmlElement elem) : base (ns, elem) + { + foreach (XmlElement member in elem.ChildNodes) { + if (member.Name != "member") + continue; + + string result = "\t\t" + member.GetAttribute("name"); + if (member.HasAttribute ("value")) { + string value = member.GetAttribute ("value").Trim (); + foreach (Match match in Regex.Matches (value, "[0-9]+([UL]{1,2})", RegexOptions.IgnoreCase)) { + switch (match.Groups[1].Value.ToUpper ()) { + case "U": enum_type = " : uint"; break; + case "L": enum_type = " : long"; break; + case "UL": enum_type = " : ulong"; break; + } + } + result += " = " + value; + } + members.Add (result + ","); + } + if (elem.HasAttribute ("enum_type")) + enum_type = " : " + elem.GetAttribute ("enum_type"); + } + + public override bool Validate () + { + return true; + } + + public override string DefaultValue { + get { + return "(" + QualifiedName + ") 0"; + } + } + + public override string MarshalType { + get { + return "int"; + } + } + + public override string CallByName (string var_name) + { + return "(int) " + var_name; + } + + public override string FromNative(string var) + { + return "(" + QualifiedName + ") " + var; + } + + public override void Generate (GenerationInfo gen_info) + { + StreamWriter sw = gen_info.OpenStream (Name); + + sw.WriteLine ("namespace " + NS + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + sw.WriteLine ("\tusing System.Runtime.InteropServices;"); + sw.WriteLine (); + + sw.WriteLine ("#region Autogenerated code"); + + if (Elem.GetAttribute("type") == "flags") + sw.WriteLine ("\t[Flags]"); + if (Elem.HasAttribute("gtype")) + sw.WriteLine ("\t[GLib.GType (typeof (" + NS + "." + Name + "GType))]"); + + string access = IsInternal ? "internal" : "public"; + sw.WriteLine ("\t" + access + " enum " + Name + enum_type + " {"); + sw.WriteLine (); + + foreach (string member in members) + sw.WriteLine (member); + + sw.WriteLine ("\t}"); + + if (Elem.HasAttribute ("gtype")) { + sw.WriteLine (); + sw.WriteLine ("\tinternal class " + Name + "GType {"); + sw.WriteLine ("\t\t[DllImport (\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]"); + sw.WriteLine ("\t\tstatic extern IntPtr " + Elem.GetAttribute ("gtype") + " ();"); + sw.WriteLine (); + sw.WriteLine ("\t\tpublic static GLib.GType GType {"); + sw.WriteLine ("\t\t\tget {"); + sw.WriteLine ("\t\t\t\treturn new GLib.GType (" + Elem.GetAttribute ("gtype") + " ());"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine ("\t}"); + } + + sw.WriteLine ("#endregion"); + sw.WriteLine ("}"); + sw.Close (); + Statistics.EnumCount++; + } + } +} + diff --git a/generator/FieldBase.cs b/generator/FieldBase.cs index 6a9b782..7e18bbb 100644 --- a/generator/FieldBase.cs +++ b/generator/FieldBase.cs @@ -62,7 +62,7 @@ namespace GtkSharp.Generation { public bool IsArray { get { - return elem.HasAttribute("array_len") || elem.HasAttribute("array"); + return elem.HasAttribute ("array_len") || elem.GetAttributeAsBoolean ("array"); } } @@ -153,7 +153,7 @@ namespace GtkSharp.Generation { SymbolTable table = SymbolTable.Table; StreamWriter sw = gen_info.Writer; - string modifiers = elem.HasAttribute ("new_flag") ? "new " : ""; + string modifiers = elem.GetAttributeAsBoolean ("new_flag") ? "new " : ""; bool is_struct = table.IsStruct (CType) || table.IsBoxed (CType); sw.WriteLine (indent + "public " + modifiers + CSType + " " + Name + " {"); diff --git a/generator/GenBase.cs b/generator/GenBase.cs index 378e3c8..73f3a43 100644 --- a/generator/GenBase.cs +++ b/generator/GenBase.cs @@ -1,112 +1,108 @@ -// GtkSharp.Generation.GenBase.cs - The Generatable base class.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2001-2002 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.IO;
- using System.Xml;
-
- public abstract class GenBase : IGeneratable {
-
- private XmlElement ns;
- private XmlElement elem;
-
- protected GenBase (XmlElement ns, XmlElement elem)
- {
- this.ns = ns;
- this.elem = elem;
- }
-
- public string CName {
- get {
- return elem.GetAttribute ("cname");
- }
- }
-
- public XmlElement Elem {
- get {
- return elem;
- }
- }
-
- public int ParserVersion {
- get {
- XmlElement root = elem.OwnerDocument.DocumentElement;
- return root.HasAttribute ("parser_version") ? int.Parse (root.GetAttribute ("parser_version")) : 1;
- }
- }
-
- public bool IsInternal {
- get {
- if (elem.HasAttribute ("internal")) {
- string attr = elem.GetAttribute ("internal");
- return attr == "1" || attr == "true";
- }
- return false;
- }
- }
-
- public string LibraryName {
- get {
- return ns.GetAttribute ("library");
- }
- }
-
- public abstract string MarshalType { get; }
-
- public string Name {
- get {
- return elem.GetAttribute ("name");
- }
- }
-
- public string NS {
- get {
- return ns.GetAttribute ("name");
- }
- }
-
- public abstract string DefaultValue { get; }
-
- public string QualifiedName {
- get {
- return NS + "." + Name;
- }
- }
-
- public abstract string CallByName (string var);
-
- public abstract string FromNative (string var);
-
- public abstract bool Validate ();
-
- public void Generate ()
- {
- GenerationInfo geninfo = new GenerationInfo (ns);
- Generate (geninfo);
- }
-
- public abstract void Generate (GenerationInfo geninfo);
- }
-}
-
+// GtkSharp.Generation.GenBase.cs - The Generatable base class. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2001-2002 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.IO; + using System.Xml; + + public abstract class GenBase : IGeneratable { + + private XmlElement ns; + private XmlElement elem; + + protected GenBase (XmlElement ns, XmlElement elem) + { + this.ns = ns; + this.elem = elem; + } + + public string CName { + get { + return elem.GetAttribute ("cname"); + } + } + + public XmlElement Elem { + get { + return elem; + } + } + + public int ParserVersion { + get { + XmlElement root = elem.OwnerDocument.DocumentElement; + return root.HasAttribute ("parser_version") ? int.Parse (root.GetAttribute ("parser_version")) : 1; + } + } + + public bool IsInternal { + get { + return elem.GetAttributeAsBoolean ("internal"); + } + } + + public string LibraryName { + get { + return ns.GetAttribute ("library"); + } + } + + public abstract string MarshalType { get; } + + public string Name { + get { + return elem.GetAttribute ("name"); + } + } + + public string NS { + get { + return ns.GetAttribute ("name"); + } + } + + public abstract string DefaultValue { get; } + + public string QualifiedName { + get { + return NS + "." + Name; + } + } + + public abstract string CallByName (string var); + + public abstract string FromNative (string var); + + public abstract bool Validate (); + + public void Generate () + { + GenerationInfo geninfo = new GenerationInfo (ns); + Generate (geninfo); + } + + public abstract void Generate (GenerationInfo geninfo); + } +} + diff --git a/generator/GenerationInfo.cs b/generator/GenerationInfo.cs index 3535a62..d01f508 100644 --- a/generator/GenerationInfo.cs +++ b/generator/GenerationInfo.cs @@ -1,167 +1,167 @@ -// GtkSharp.Generation.GenerationInfo.cs - Generation information class.
-//
-// Author: Mike Kestner <mkestner@ximian.com>
-//
-// Copyright (c) 2003-2008 Novell Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class GenerationInfo {
-
- string dir;
- string assembly_name;
- string gluelib_name;
- bool glue_enabled;
- StreamWriter sw;
- StreamWriter glue_sw;
-
- public GenerationInfo (XmlElement ns)
- {
- string ns_name = ns.GetAttribute ("name");
- char sep = Path.DirectorySeparatorChar;
- dir = ".." + sep + ns_name.ToLower () + sep + "generated";
- assembly_name = ns_name.ToLower () + "-sharp";
- }
-
- public GenerationInfo (string dir, string assembly_name) : this (dir, assembly_name, "", "", "") {}
-
- public GenerationInfo (string dir, string assembly_name, string glue_filename, string glue_includes, string gluelib_name)
- {
- this.dir = dir;
- this.assembly_name = assembly_name;
- this.gluelib_name = gluelib_name;
- InitializeGlue (glue_filename, glue_includes, gluelib_name);
- }
-
- void InitializeGlue (string glue_filename, string glue_includes, string gluelib_name)
- {
- if (gluelib_name != String.Empty && glue_filename != String.Empty) {
- FileStream stream;
- try {
- stream = new FileStream (glue_filename, FileMode.Create, FileAccess.Write);
- } catch (Exception) {
- Console.Error.WriteLine ("Unable to create specified glue file. Glue will not be generated.");
- return;
- }
-
- glue_sw = new StreamWriter (stream);
-
- glue_sw.WriteLine ("// This file was generated by the Gtk# code generator.");
- glue_sw.WriteLine ("// Any changes made will be lost if regenerated.");
- glue_sw.WriteLine ();
-
- if (glue_includes != "") {
- foreach (string header in glue_includes.Split (new char[] {',', ' '})) {
- if (header != "")
- glue_sw.WriteLine ("#include <{0}>", header);
- }
- glue_sw.WriteLine ("");
- }
- glue_enabled = true;
- }
- }
-
- public string AssemblyName {
- get {
- return assembly_name;
- }
- }
-
- public string Dir {
- get {
- return dir;
- }
- }
-
- public string GluelibName {
- get {
- return gluelib_name;
- }
- }
-
- public bool GlueEnabled {
- get {
- return glue_enabled;
- }
- }
-
- public StreamWriter GlueWriter {
- get {
- return glue_sw;
- }
- }
-
- public StreamWriter Writer {
- get {
- return sw;
- }
- set {
- sw = value;
- }
- }
-
- public void CloseGlueWriter ()
- {
- if (glue_sw != null)
- glue_sw.Close ();
- }
-
- string member;
- public string CurrentMember {
- get {
- return typename + "." + member;
- }
- set {
- member = value;
- }
- }
-
- string typename;
- public string CurrentType {
- get {
- return typename;
- }
- set {
- typename = value;
- }
- }
-
- public StreamWriter OpenStream (string name)
- {
- char sep = Path.DirectorySeparatorChar;
- if (!Directory.Exists(dir))
- Directory.CreateDirectory(dir);
- string filename = dir + sep + name + ".cs";
-
- FileStream stream = new FileStream (filename, FileMode.Create, FileAccess.Write);
- StreamWriter sw = new StreamWriter (stream);
-
- sw.WriteLine ("// This file was generated by the Gtk# code generator.");
- sw.WriteLine ("// Any changes made will be lost if regenerated.");
- sw.WriteLine ();
-
- return sw;
- }
- }
-}
-
+// GtkSharp.Generation.GenerationInfo.cs - Generation information class. +// +// Author: Mike Kestner <mkestner@ximian.com> +// +// Copyright (c) 2003-2008 Novell Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Xml; + + public class GenerationInfo { + + string dir; + string assembly_name; + string gluelib_name; + bool glue_enabled; + StreamWriter sw; + StreamWriter glue_sw; + + public GenerationInfo (XmlElement ns) + { + string ns_name = ns.GetAttribute ("name"); + char sep = Path.DirectorySeparatorChar; + dir = ".." + sep + ns_name.ToLower () + sep + "generated"; + assembly_name = ns_name.ToLower () + "-sharp"; + } + + public GenerationInfo (string dir, string assembly_name) : this (dir, assembly_name, "", "", "") {} + + public GenerationInfo (string dir, string assembly_name, string glue_filename, string glue_includes, string gluelib_name) + { + this.dir = dir; + this.assembly_name = assembly_name; + this.gluelib_name = gluelib_name; + InitializeGlue (glue_filename, glue_includes, gluelib_name); + } + + void InitializeGlue (string glue_filename, string glue_includes, string gluelib_name) + { + if (gluelib_name != String.Empty && glue_filename != String.Empty) { + FileStream stream; + try { + stream = new FileStream (glue_filename, FileMode.Create, FileAccess.Write); + } catch (Exception) { + Console.Error.WriteLine ("Unable to create specified glue file. Glue will not be generated."); + return; + } + + glue_sw = new StreamWriter (stream); + + glue_sw.WriteLine ("// This file was generated by the Gtk# code generator."); + glue_sw.WriteLine ("// Any changes made will be lost if regenerated."); + glue_sw.WriteLine (); + + if (glue_includes != "") { + foreach (string header in glue_includes.Split (new char[] {',', ' '})) { + if (header != "") + glue_sw.WriteLine ("#include <{0}>", header); + } + glue_sw.WriteLine (""); + } + glue_enabled = true; + } + } + + public string AssemblyName { + get { + return assembly_name; + } + } + + public string Dir { + get { + return dir; + } + } + + public string GluelibName { + get { + return gluelib_name; + } + } + + public bool GlueEnabled { + get { + return glue_enabled; + } + } + + public StreamWriter GlueWriter { + get { + return glue_sw; + } + } + + public StreamWriter Writer { + get { + return sw; + } + set { + sw = value; + } + } + + public void CloseGlueWriter () + { + if (glue_sw != null) + glue_sw.Close (); + } + + string member; + public string CurrentMember { + get { + return typename + "." + member; + } + set { + member = value; + } + } + + string typename; + public string CurrentType { + get { + return typename; + } + set { + typename = value; + } + } + + public StreamWriter OpenStream (string name) + { + char sep = Path.DirectorySeparatorChar; + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); + string filename = dir + sep + name + ".cs"; + + FileStream stream = new FileStream (filename, FileMode.Create, FileAccess.Write); + StreamWriter sw = new StreamWriter (stream); + + sw.WriteLine ("// This file was generated by the Gtk# code generator."); + sw.WriteLine ("// Any changes made will be lost if regenerated."); + sw.WriteLine (); + + return sw; + } + } +} + diff --git a/generator/IGeneratable.cs b/generator/IGeneratable.cs index 3fd532c..5a7d9ea 100644 --- a/generator/IGeneratable.cs +++ b/generator/IGeneratable.cs @@ -1,57 +1,57 @@ -// GtkSharp.Generation.IGeneratable.cs - Interface to generate code for a type.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2001 Mike Kestner
-// Copyright (c) 2007 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- public interface IGeneratable {
-
- // The C name of the generatable
- string CName {get;}
-
- // The (short) C# name of the generatable
- string Name {get;}
-
- // The fully-qualified C# name of the generatable
- string QualifiedName {get;}
-
- // The type (possibly including "ref" or "out") to use in the import
- // signature when passing this generatable to unmanaged code
- string MarshalType {get;}
-
- // The value returned by callbacks that are interrupted prematurely
- // by managed exceptions or other conditions where an appropriate
- // value can't be otherwise obtained.
- string DefaultValue {get;}
-
- // Generates an expression to convert var_name to MarshalType
- string CallByName (string var_name);
-
- // Generates an expression to convert var from MarshalType
- string FromNative (string var);
-
- bool Validate ();
-
- void Generate ();
-
- void Generate (GenerationInfo gen_info);
- }
-}
+// GtkSharp.Generation.IGeneratable.cs - Interface to generate code for a type. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2001 Mike Kestner +// Copyright (c) 2007 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + public interface IGeneratable { + + // The C name of the generatable + string CName {get;} + + // The (short) C# name of the generatable + string Name {get;} + + // The fully-qualified C# name of the generatable + string QualifiedName {get;} + + // The type (possibly including "ref" or "out") to use in the import + // signature when passing this generatable to unmanaged code + string MarshalType {get;} + + // The value returned by callbacks that are interrupted prematurely + // by managed exceptions or other conditions where an appropriate + // value can't be otherwise obtained. + string DefaultValue {get;} + + // Generates an expression to convert var_name to MarshalType + string CallByName (string var_name); + + // Generates an expression to convert var from MarshalType + string FromNative (string var); + + bool Validate (); + + void Generate (); + + void Generate (GenerationInfo gen_info); + } +} diff --git a/generator/IManualMarshaler.cs b/generator/IManualMarshaler.cs index e9e7eaf..25633c5 100644 --- a/generator/IManualMarshaler.cs +++ b/generator/IManualMarshaler.cs @@ -1,32 +1,32 @@ -// GtkSharp.Generation.IManualMarshaler.cs - Interface for manual marshaling.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- public interface IManualMarshaler {
-
- string AllocNative (string managed_var);
-
- string ReleaseNative (string native_var);
-
- }
-}
-
+// GtkSharp.Generation.IManualMarshaler.cs - Interface for manual marshaling. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + public interface IManualMarshaler { + + string AllocNative (string managed_var); + + string ReleaseNative (string native_var); + + } +} + diff --git a/generator/InterfaceGen.cs b/generator/InterfaceGen.cs index 9978c7a..cb6d1ac 100644 --- a/generator/InterfaceGen.cs +++ b/generator/InterfaceGen.cs @@ -1,363 +1,363 @@ -// GtkSharp.Generation.InterfaceGen.cs - The Interface Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2004, 2007 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class InterfaceGen : ObjectBase {
-
- bool consume_only;
-
- public InterfaceGen (XmlElement ns, XmlElement elem) : base (ns, elem, true)
- {
- consume_only = elem.HasAttribute ("consume_only");
- foreach (XmlNode node in elem.ChildNodes) {
- if (!(node is XmlElement)) continue;
- XmlElement member = (XmlElement) node;
-
- switch (member.Name) {
- case "signal":
- object sig = sigs [member.GetAttribute ("name")];
- if (sig == null)
- sig = new Signal (node as XmlElement, this);
- break;
- default:
- if (!base.IsNodeNameHandled (node.Name))
- new LogWriter (QualifiedName).Warn ("Unexpected node " + node.Name);
- break;
- }
- }
- }
-
- public bool IsConsumeOnly {
- get {
- return consume_only;
- }
- }
-
- public override string CallByName (string var, bool owned)
- {
- return String.Format ("{0} == null ? IntPtr.Zero : (({0} is GLib.Object) ? ({0} as GLib.Object).{1} : ({0} as {2}Adapter).{1})", var, owned ? "OwnedHandle" : "Handle", QualifiedName);
- }
-
- public override string FromNative (string var, bool owned)
- {
- return QualifiedName + "Adapter.GetObject (" + var + ", " + (owned ? "true" : "false") + ")";
- }
-
- public override bool ValidateForSubclass ()
- {
- if (!base.ValidateForSubclass ())
- return false;
-
- LogWriter log = new LogWriter (QualifiedName);
- ArrayList invalids = new ArrayList ();
- foreach (Method method in methods.Values) {
- if (!method.Validate (log))
- invalids.Add (method);
- }
- foreach (Method method in invalids)
- methods.Remove (method.Name);
- invalids.Clear ();
-
- return true;
- }
-
- void GenerateStaticCtor (StreamWriter sw)
- {
- sw.WriteLine ("\t\tstatic {0} iface;", class_struct_name);
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic " + Name + "Adapter ()");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tGLib.GType.Register (_gtype, typeof({0}Adapter));", Name);
- foreach (InterfaceVM vm in interface_vms) {
- if (vm.Validate (new LogWriter (QualifiedName)))
- sw.WriteLine ("\t\t\tiface.{0} = new {0}NativeDelegate ({0}_cb);", vm.Name);
- }
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateInitialize (StreamWriter sw)
- {
- sw.WriteLine ("\t\tstatic int class_offset = 2 * IntPtr.Size;"); // Class size of GTypeInterface struct
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic void Initialize (IntPtr ptr, IntPtr data)");
- sw.WriteLine ("\t\t{");
- if (interface_vms.Count > 0) {
- sw.WriteLine ("\t\t\tIntPtr ifaceptr = new IntPtr (ptr.ToInt64 () + class_offset);");
- sw.WriteLine ("\t\t\t{0} native_iface = ({0}) Marshal.PtrToStructure (ifaceptr, typeof ({0}));", class_struct_name);
- foreach (InterfaceVM vm in interface_vms) {
- sw.WriteLine ("\t\t\tnative_iface." + vm.Name + " = iface." + vm.Name + ";");
- }
- sw.WriteLine ("\t\t\tMarshal.StructureToPtr (native_iface, ifaceptr, false);");
- sw.WriteLine ("\t\t\tGCHandle gch = (GCHandle) data;");
- sw.WriteLine ("\t\t\tgch.Free ();");
- }
-
- foreach (Property prop in props.Values) {
- sw.WriteLine ("\t\t\tGLib.Object.OverrideProperty (data, \"" + prop.CName + "\");");
- }
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateCallbacks (StreamWriter sw)
- {
- foreach (InterfaceVM vm in interface_vms) {
- vm.GenerateCallback (sw, null);
- }
- }
-
- void GenerateCtors (StreamWriter sw)
- {
- // Native GObjects do not implement the *Implementor interfaces
- sw.WriteLine ("\t\tGLib.Object implementor;", Name);
- sw.WriteLine ();
-
- if (!IsConsumeOnly) {
- sw.WriteLine ("\t\tpublic " + Name + "Adapter ()");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tInitHandler = new GLib.GInterfaceInitHandler (Initialize);");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\tpublic {0}Adapter ({0}Implementor implementor)", Name);
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (implementor == null)");
- sw.WriteLine ("\t\t\t\tthrow new ArgumentNullException (\"implementor\");");
- sw.WriteLine ("\t\t\telse if (!(implementor is GLib.Object))");
- sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"implementor must be a subclass of GLib.Object\");");
- sw.WriteLine ("\t\t\tthis.implementor = implementor as GLib.Object;");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- sw.WriteLine ("\t\tpublic " + Name + "Adapter (IntPtr handle)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (!_gtype.IsInstance (handle))");
- sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"The gobject doesn't implement the GInterface of this adapter\", \"handle\");");
- sw.WriteLine ("\t\t\timplementor = GLib.Object.GetObject (handle);");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateGType (StreamWriter sw)
- {
- Method m = GetMethod ("GetType");
- if (m == null)
- throw new Exception ("Interface " + QualifiedName + " missing GetType method.");
- m.GenerateImport (sw);
- sw.WriteLine ("\t\tprivate static GLib.GType _gtype = new GLib.GType ({0} ());", m.CName);
- sw.WriteLine ();
- sw.WriteLine ("\t\tpublic override GLib.GType GType {");
- sw.WriteLine ("\t\t\tget {");
- sw.WriteLine ("\t\t\t\treturn _gtype;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateHandleProp (StreamWriter sw)
- {
- sw.WriteLine ("\t\tpublic override IntPtr Handle {");
- sw.WriteLine ("\t\t\tget {");
- sw.WriteLine ("\t\t\t\treturn implementor.Handle;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\tpublic IntPtr OwnedHandle {");
- sw.WriteLine ("\t\t\tget {");
- sw.WriteLine ("\t\t\t\treturn implementor.OwnedHandle;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateGetObject (StreamWriter sw)
- {
- sw.WriteLine ("\t\tpublic static " + Name + " GetObject (IntPtr handle, bool owned)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tGLib.Object obj = GLib.Object.GetObject (handle, owned);");
- sw.WriteLine ("\t\t\treturn GetObject (obj);");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\tpublic static " + Name + " GetObject (GLib.Object obj)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (obj == null)");
- sw.WriteLine ("\t\t\t\treturn null;");
- if (!IsConsumeOnly) {
- sw.WriteLine ("\t\t\telse if (obj is " + Name + "Implementor)");
- sw.WriteLine ("\t\t\t\treturn new {0}Adapter (obj as {0}Implementor);", Name);
- }
- sw.WriteLine ("\t\t\telse if (obj as " + Name + " == null)");
- sw.WriteLine ("\t\t\t\treturn new {0}Adapter (obj.Handle);", Name);
- sw.WriteLine ("\t\t\telse");
- sw.WriteLine ("\t\t\t\treturn obj as {0};", Name);
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateImplementorProp (StreamWriter sw)
- {
- sw.WriteLine ("\t\tpublic " + Name + "Implementor Implementor {");
- sw.WriteLine ("\t\t\tget {");
- sw.WriteLine ("\t\t\t\treturn implementor as {0}Implementor;", Name);
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- void GenerateAdapter (GenerationInfo gen_info)
- {
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name + "Adapter");
-
- sw.WriteLine ("namespace " + NS + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
- sw.WriteLine ("\tusing System.Runtime.InteropServices;");
- sw.WriteLine ();
- sw.WriteLine ("#region Autogenerated code");
- sw.WriteLine ("\tpublic partial class " + Name + "Adapter : GLib.GInterfaceAdapter, " + QualifiedName + " {");
- sw.WriteLine ();
-
- if (!IsConsumeOnly) {
- GenerateClassStruct (gen_info);
- GenerateStaticCtor (sw);
- GenerateCallbacks (sw);
- GenerateInitialize (sw);
- }
- GenerateCtors (sw);
- GenerateGType (sw);
- GenerateHandleProp (sw);
- GenerateGetObject (sw);
- if (!IsConsumeOnly)
- GenerateImplementorProp (sw);
-
- GenProperties (gen_info, null);
-
- foreach (Signal sig in sigs.Values)
- sig.GenEvent (sw, null, "GLib.Object.GetObject (Handle)");
-
- Method temp = methods ["GetType"] as Method;
- if (temp != null)
- methods.Remove ("GetType");
- GenMethods (gen_info, new Hashtable (), this);
- if (temp != null)
- methods ["GetType"] = temp;
-
- sw.WriteLine ("#endregion");
-
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
- sw.Close ();
- gen_info.Writer = null;
- }
-
- void GenerateImplementorIface (GenerationInfo gen_info)
- {
- if (IsConsumeOnly)
- return;
-
- StreamWriter sw = gen_info.Writer;
- sw.WriteLine ();
- sw.WriteLine ("\t[GLib.GInterface (typeof (" + Name + "Adapter))]");
- string access = IsInternal ? "internal" : "public";
- sw.WriteLine ("\t" + access + " partial interface " + Name + "Implementor : GLib.IWrapper {");
- sw.WriteLine ();
- Hashtable vm_table = new Hashtable ();
- foreach (InterfaceVM vm in interface_vms) {
- vm_table [vm.Name] = vm;
- }
- foreach (InterfaceVM vm in interface_vms) {
- if (vm_table [vm.Name] == null)
- continue;
- else if (!vm.Validate (new LogWriter (QualifiedName))) {
- vm_table.Remove (vm.Name);
- continue;
- } else if (vm.IsGetter || vm.IsSetter) {
- string cmp_name = (vm.IsGetter ? "Set" : "Get") + vm.Name.Substring (3);
- InterfaceVM cmp = vm_table [cmp_name] as InterfaceVM;
- if (cmp != null && (cmp.IsGetter || cmp.IsSetter)) {
- if (vm.IsSetter)
- cmp.GenerateDeclaration (sw, vm);
- else
- vm.GenerateDeclaration (sw, cmp);
- vm_table.Remove (cmp.Name);
- } else
- vm.GenerateDeclaration (sw, null);
- vm_table.Remove (vm.Name);
- } else {
- vm.GenerateDeclaration (sw, null);
- vm_table.Remove (vm.Name);
- }
- }
- foreach (Property prop in props.Values) {
- sw.WriteLine ("\t\t[GLib.Property (\"" + prop.CName + "\")]");
- prop.GenerateDecl (sw, "\t\t");
- }
-
- sw.WriteLine ("\t}");
- }
-
- public override void Generate (GenerationInfo gen_info)
- {
- GenerateAdapter (gen_info);
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
-
- sw.WriteLine ("namespace " + NS + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
- sw.WriteLine ();
- sw.WriteLine ("#region Autogenerated code");
- string access = IsInternal ? "internal" : "public";
- sw.WriteLine ("\t" + access + " partial interface " + Name + " : GLib.IWrapper {");
- sw.WriteLine ();
-
- foreach (Signal sig in sigs.Values) {
- sig.GenerateDecl (sw);
- sig.GenEventHandler (gen_info);
- }
-
- foreach (Method method in methods.Values) {
- if (IgnoreMethod (method, this))
- continue;
- method.GenerateDecl (sw);
- }
-
- foreach (Property prop in props.Values)
- prop.GenerateDecl (sw, "\t\t");
-
- sw.WriteLine ("\t}");
- GenerateImplementorIface (gen_info);
- sw.WriteLine ("#endregion");
- sw.WriteLine ("}");
- sw.Close ();
- gen_info.Writer = null;
- Statistics.IFaceCount++;
- }
- }
-}
-
+// GtkSharp.Generation.InterfaceGen.cs - The Interface Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004, 2007 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.IO; + using System.Xml; + + public class InterfaceGen : ObjectBase { + + bool consume_only; + + public InterfaceGen (XmlElement ns, XmlElement elem) : base (ns, elem, true) + { + consume_only = elem.GetAttributeAsBoolean ("consume_only"); + foreach (XmlNode node in elem.ChildNodes) { + if (!(node is XmlElement)) continue; + XmlElement member = (XmlElement) node; + + switch (member.Name) { + case "signal": + object sig = sigs [member.GetAttribute ("name")]; + if (sig == null) + sig = new Signal (node as XmlElement, this); + break; + default: + if (!base.IsNodeNameHandled (node.Name)) + new LogWriter (QualifiedName).Warn ("Unexpected node " + node.Name); + break; + } + } + } + + public bool IsConsumeOnly { + get { + return consume_only; + } + } + + public override string CallByName (string var, bool owned) + { + return String.Format ("{0} == null ? IntPtr.Zero : (({0} is GLib.Object) ? ({0} as GLib.Object).{1} : ({0} as {2}Adapter).{1})", var, owned ? "OwnedHandle" : "Handle", QualifiedName); + } + + public override string FromNative (string var, bool owned) + { + return QualifiedName + "Adapter.GetObject (" + var + ", " + (owned ? "true" : "false") + ")"; + } + + public override bool ValidateForSubclass () + { + if (!base.ValidateForSubclass ()) + return false; + + LogWriter log = new LogWriter (QualifiedName); + var invalids = new List<Method> (); + foreach (Method method in Methods.Values) { + if (!method.Validate (log)) + invalids.Add (method); + } + foreach (Method method in invalids) + Methods.Remove (method.Name); + invalids.Clear (); + + return true; + } + + void GenerateStaticCtor (StreamWriter sw) + { + sw.WriteLine ("\t\tstatic {0} iface;", class_struct_name); + sw.WriteLine (); + sw.WriteLine ("\t\tstatic " + Name + "Adapter ()"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tGLib.GType.Register (_gtype, typeof({0}Adapter));", Name); + foreach (InterfaceVM vm in interface_vms) { + if (vm.Validate (new LogWriter (QualifiedName))) + sw.WriteLine ("\t\t\tiface.{0} = new {0}NativeDelegate ({0}_cb);", vm.Name); + } + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateInitialize (StreamWriter sw) + { + sw.WriteLine ("\t\tstatic int class_offset = 2 * IntPtr.Size;"); // Class size of GTypeInterface struct + sw.WriteLine (); + sw.WriteLine ("\t\tstatic void Initialize (IntPtr ptr, IntPtr data)"); + sw.WriteLine ("\t\t{"); + if (interface_vms.Count > 0) { + sw.WriteLine ("\t\t\tIntPtr ifaceptr = new IntPtr (ptr.ToInt64 () + class_offset);"); + sw.WriteLine ("\t\t\t{0} native_iface = ({0}) Marshal.PtrToStructure (ifaceptr, typeof ({0}));", class_struct_name); + foreach (InterfaceVM vm in interface_vms) { + sw.WriteLine ("\t\t\tnative_iface." + vm.Name + " = iface." + vm.Name + ";"); + } + sw.WriteLine ("\t\t\tMarshal.StructureToPtr (native_iface, ifaceptr, false);"); + sw.WriteLine ("\t\t\tGCHandle gch = (GCHandle) data;"); + sw.WriteLine ("\t\t\tgch.Free ();"); + } + + foreach (Property prop in Properties.Values) { + sw.WriteLine ("\t\t\tGLib.Object.OverrideProperty (data, \"" + prop.CName + "\");"); + } + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateCallbacks (StreamWriter sw) + { + foreach (InterfaceVM vm in interface_vms) { + vm.GenerateCallback (sw, null); + } + } + + void GenerateCtors (StreamWriter sw) + { + // Native GObjects do not implement the *Implementor interfaces + sw.WriteLine ("\t\tGLib.Object implementor;", Name); + sw.WriteLine (); + + if (!IsConsumeOnly) { + sw.WriteLine ("\t\tpublic " + Name + "Adapter ()"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tInitHandler = new GLib.GInterfaceInitHandler (Initialize);"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\tpublic {0}Adapter ({0}Implementor implementor)", Name); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (implementor == null)"); + sw.WriteLine ("\t\t\t\tthrow new ArgumentNullException (\"implementor\");"); + sw.WriteLine ("\t\t\telse if (!(implementor is GLib.Object))"); + sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"implementor must be a subclass of GLib.Object\");"); + sw.WriteLine ("\t\t\tthis.implementor = implementor as GLib.Object;"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + sw.WriteLine ("\t\tpublic " + Name + "Adapter (IntPtr handle)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (!_gtype.IsInstance (handle))"); + sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"The gobject doesn't implement the GInterface of this adapter\", \"handle\");"); + sw.WriteLine ("\t\t\timplementor = GLib.Object.GetObject (handle);"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateGType (StreamWriter sw) + { + Method m = GetMethod ("GetType"); + if (m == null) + throw new Exception ("Interface " + QualifiedName + " missing GetType method."); + m.GenerateImport (sw); + sw.WriteLine ("\t\tprivate static GLib.GType _gtype = new GLib.GType ({0} ());", m.CName); + sw.WriteLine (); + sw.WriteLine ("\t\tpublic override GLib.GType GType {"); + sw.WriteLine ("\t\t\tget {"); + sw.WriteLine ("\t\t\t\treturn _gtype;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateHandleProp (StreamWriter sw) + { + sw.WriteLine ("\t\tpublic override IntPtr Handle {"); + sw.WriteLine ("\t\t\tget {"); + sw.WriteLine ("\t\t\t\treturn implementor.Handle;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\tpublic IntPtr OwnedHandle {"); + sw.WriteLine ("\t\t\tget {"); + sw.WriteLine ("\t\t\t\treturn implementor.OwnedHandle;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateGetObject (StreamWriter sw) + { + sw.WriteLine ("\t\tpublic static " + Name + " GetObject (IntPtr handle, bool owned)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tGLib.Object obj = GLib.Object.GetObject (handle, owned);"); + sw.WriteLine ("\t\t\treturn GetObject (obj);"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\tpublic static " + Name + " GetObject (GLib.Object obj)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (obj == null)"); + sw.WriteLine ("\t\t\t\treturn null;"); + if (!IsConsumeOnly) { + sw.WriteLine ("\t\t\telse if (obj is " + Name + "Implementor)"); + sw.WriteLine ("\t\t\t\treturn new {0}Adapter (obj as {0}Implementor);", Name); + } + sw.WriteLine ("\t\t\telse if (obj as " + Name + " == null)"); + sw.WriteLine ("\t\t\t\treturn new {0}Adapter (obj.Handle);", Name); + sw.WriteLine ("\t\t\telse"); + sw.WriteLine ("\t\t\t\treturn obj as {0};", Name); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateImplementorProp (StreamWriter sw) + { + sw.WriteLine ("\t\tpublic " + Name + "Implementor Implementor {"); + sw.WriteLine ("\t\t\tget {"); + sw.WriteLine ("\t\t\t\treturn implementor as {0}Implementor;", Name); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + void GenerateAdapter (GenerationInfo gen_info) + { + StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name + "Adapter"); + + sw.WriteLine ("namespace " + NS + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + sw.WriteLine ("\tusing System.Runtime.InteropServices;"); + sw.WriteLine (); + sw.WriteLine ("#region Autogenerated code"); + sw.WriteLine ("\tpublic partial class " + Name + "Adapter : GLib.GInterfaceAdapter, " + QualifiedName + " {"); + sw.WriteLine (); + + if (!IsConsumeOnly) { + GenerateClassStruct (gen_info); + GenerateStaticCtor (sw); + GenerateCallbacks (sw); + GenerateInitialize (sw); + } + GenerateCtors (sw); + GenerateGType (sw); + GenerateHandleProp (sw); + GenerateGetObject (sw); + if (!IsConsumeOnly) + GenerateImplementorProp (sw); + + GenProperties (gen_info, null); + + foreach (Signal sig in sigs.Values) + sig.GenEvent (sw, null, "GLib.Object.GetObject (Handle)"); + + Method temp = GetMethod ("GetType"); + if (temp != null) + Methods.Remove ("GetType"); + GenMethods (gen_info, null, this); + if (temp != null) + Methods ["GetType"] = temp; + + sw.WriteLine ("#endregion"); + + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + sw.Close (); + gen_info.Writer = null; + } + + void GenerateImplementorIface (GenerationInfo gen_info) + { + if (IsConsumeOnly) + return; + + StreamWriter sw = gen_info.Writer; + sw.WriteLine (); + sw.WriteLine ("\t[GLib.GInterface (typeof (" + Name + "Adapter))]"); + string access = IsInternal ? "internal" : "public"; + sw.WriteLine ("\t" + access + " partial interface " + Name + "Implementor : GLib.IWrapper {"); + sw.WriteLine (); + var vm_table = new Dictionary<string, InterfaceVM> (); + foreach (InterfaceVM vm in interface_vms) { + vm_table [vm.Name] = vm; + } + foreach (InterfaceVM vm in interface_vms) { + if (!vm_table.ContainsKey (vm.Name)) { + continue; + } else if (!vm.Validate (new LogWriter (QualifiedName))) { + vm_table.Remove (vm.Name); + continue; + } else if (vm.IsGetter || vm.IsSetter) { + string cmp_name = (vm.IsGetter ? "Set" : "Get") + vm.Name.Substring (3); + InterfaceVM cmp = null; + if (vm_table.TryGetValue (cmp_name, out cmp) && (cmp.IsGetter || cmp.IsSetter)) { + if (vm.IsSetter) + cmp.GenerateDeclaration (sw, vm); + else + vm.GenerateDeclaration (sw, cmp); + vm_table.Remove (cmp.Name); + } else + vm.GenerateDeclaration (sw, null); + vm_table.Remove (vm.Name); + } else { + vm.GenerateDeclaration (sw, null); + vm_table.Remove (vm.Name); + } + } + foreach (Property prop in Properties.Values) { + sw.WriteLine ("\t\t[GLib.Property (\"" + prop.CName + "\")]"); + prop.GenerateDecl (sw, "\t\t"); + } + + sw.WriteLine ("\t}"); + } + + public override void Generate (GenerationInfo gen_info) + { + GenerateAdapter (gen_info); + StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name); + + sw.WriteLine ("namespace " + NS + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + sw.WriteLine (); + sw.WriteLine ("#region Autogenerated code"); + string access = IsInternal ? "internal" : "public"; + sw.WriteLine ("\t" + access + " partial interface " + Name + " : GLib.IWrapper {"); + sw.WriteLine (); + + foreach (Signal sig in sigs.Values) { + sig.GenerateDecl (sw); + sig.GenEventHandler (gen_info); + } + + foreach (Method method in Methods.Values) { + if (IgnoreMethod (method, this)) + continue; + method.GenerateDecl (sw); + } + + foreach (Property prop in Properties.Values) + prop.GenerateDecl (sw, "\t\t"); + + sw.WriteLine ("\t}"); + GenerateImplementorIface (gen_info); + sw.WriteLine ("#endregion"); + sw.WriteLine ("}"); + sw.Close (); + gen_info.Writer = null; + Statistics.IFaceCount++; + } + } +} + diff --git a/generator/LPGen.cs b/generator/LPGen.cs index 3fb774e..84940b5 100644 --- a/generator/LPGen.cs +++ b/generator/LPGen.cs @@ -1,58 +1,58 @@ -// GtkSharp.Generation.LPGen.cs - long/pointer Generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.IO;
-
- public class LPGen : SimpleGen, IAccessor {
-
- public LPGen (string ctype) : base (ctype, "long", "0L") {}
-
- public override string MarshalType {
- get {
- return "IntPtr";
- }
- }
-
- public override string CallByName (string var_name)
- {
- return "new IntPtr (" + var_name + ")";
- }
-
- public override string FromNative(string var)
- {
- return "(long) " + var;
- }
-
- public void WriteAccessors (StreamWriter sw, string indent, string var)
- {
- sw.WriteLine (indent + "get {");
- sw.WriteLine (indent + "\treturn " + FromNative (var) + ";");
- sw.WriteLine (indent + "}");
- sw.WriteLine (indent + "set {");
- sw.WriteLine (indent + "\t" + var + " = " + CallByName ("value") + ";");
- sw.WriteLine (indent + "}");
- }
- }
-}
-
+// GtkSharp.Generation.LPGen.cs - long/pointer Generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.IO; + + public class LPGen : SimpleGen, IAccessor { + + public LPGen (string ctype) : base (ctype, "long", "0L") {} + + public override string MarshalType { + get { + return "IntPtr"; + } + } + + public override string CallByName (string var_name) + { + return "new IntPtr (" + var_name + ")"; + } + + public override string FromNative(string var) + { + return "(long) " + var; + } + + public void WriteAccessors (StreamWriter sw, string indent, string var) + { + sw.WriteLine (indent + "get {"); + sw.WriteLine (indent + "\treturn " + FromNative (var) + ";"); + sw.WriteLine (indent + "}"); + sw.WriteLine (indent + "set {"); + sw.WriteLine (indent + "\t" + var + " = " + CallByName ("value") + ";"); + sw.WriteLine (indent + "}"); + } + } +} + diff --git a/generator/LPUGen.cs b/generator/LPUGen.cs index 331b25f..f84cdd8 100644 --- a/generator/LPUGen.cs +++ b/generator/LPUGen.cs @@ -1,58 +1,58 @@ -// GtkSharp.Generation.LPUGen.cs - unsugned long/pointer generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.IO;
-
- public class LPUGen : SimpleGen, IAccessor {
-
- public LPUGen (string ctype) : base (ctype, "ulong", "0") {}
-
- public override string MarshalType {
- get {
- return "UIntPtr";
- }
- }
-
- public override string CallByName (string var_name)
- {
- return "new UIntPtr (" + var_name + ")";
- }
-
- public override string FromNative(string var)
- {
- return "(ulong) " + var;
- }
-
- public void WriteAccessors (StreamWriter sw, string indent, string var)
- {
- sw.WriteLine (indent + "get {");
- sw.WriteLine (indent + "\treturn " + FromNative (var) + ";");
- sw.WriteLine (indent + "}");
- sw.WriteLine (indent + "set {");
- sw.WriteLine (indent + "\t" + var + " = " + CallByName ("value") + ";");
- sw.WriteLine (indent + "}");
- }
- }
-}
-
+// GtkSharp.Generation.LPUGen.cs - unsugned long/pointer generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.IO; + + public class LPUGen : SimpleGen, IAccessor { + + public LPUGen (string ctype) : base (ctype, "ulong", "0") {} + + public override string MarshalType { + get { + return "UIntPtr"; + } + } + + public override string CallByName (string var_name) + { + return "new UIntPtr (" + var_name + ")"; + } + + public override string FromNative(string var) + { + return "(ulong) " + var; + } + + public void WriteAccessors (StreamWriter sw, string indent, string var) + { + sw.WriteLine (indent + "get {"); + sw.WriteLine (indent + "\treturn " + FromNative (var) + ";"); + sw.WriteLine (indent + "}"); + sw.WriteLine (indent + "set {"); + sw.WriteLine (indent + "\t" + var + " = " + CallByName ("value") + ";"); + sw.WriteLine (indent + "}"); + } + } +} + diff --git a/generator/Makefile.am b/generator/Makefile.am index ca061f0..7ef6a8e 100644 --- a/generator/Makefile.am +++ b/generator/Makefile.am @@ -8,6 +8,7 @@ references = sources = \ AliasGen.cs \ + ArrayParameter.cs \ BoxedGen.cs \ ByRefGen.cs \ CallbackGen.cs \ @@ -46,6 +47,7 @@ sources = \ ObjectGen.cs \ OpaqueGen.cs \ OwnableGen.cs \ + Parameter.cs \ Parameters.cs \ Parser.cs \ Property.cs \ @@ -61,7 +63,8 @@ sources = \ StructGen.cs \ SymbolTable.cs \ VirtualMethod.cs \ - VMSignature.cs + VMSignature.cs \ + XmlElementExtensions.cs build_sources = $(addprefix $(srcdir)/, $(sources)) dist_sources = $(sources) diff --git a/generator/Makefile.in b/generator/Makefile.in index 7b573db..f6f9e4d 100644 --- a/generator/Makefile.in +++ b/generator/Makefile.in @@ -52,7 +52,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = generator DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/gapi3-codegen.in @@ -115,8 +114,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -140,7 +137,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -195,6 +191,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -250,11 +248,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @@ -266,6 +260,7 @@ DISTCLEANFILES = gapi3-codegen references = sources = \ AliasGen.cs \ + ArrayParameter.cs \ BoxedGen.cs \ ByRefGen.cs \ CallbackGen.cs \ @@ -304,6 +299,7 @@ sources = \ ObjectGen.cs \ OpaqueGen.cs \ OwnableGen.cs \ + Parameter.cs \ Parameters.cs \ Parser.cs \ Property.cs \ @@ -319,7 +315,8 @@ sources = \ StructGen.cs \ SymbolTable.cs \ VirtualMethod.cs \ - VMSignature.cs + VMSignature.cs \ + XmlElementExtensions.cs build_sources = $(addprefix $(srcdir)/, $(sources)) dist_sources = $(sources) diff --git a/generator/ManagedCallString.cs b/generator/ManagedCallString.cs index 3102184..de0ad1b 100644 --- a/generator/ManagedCallString.cs +++ b/generator/ManagedCallString.cs @@ -22,13 +22,12 @@ namespace GtkSharp.Generation { using System; - using System.Collections; + using System.Collections.Generic; using System.IO; public class ManagedCallString { - ArrayList parms = new ArrayList (); - ArrayList special = new ArrayList (); + IDictionary<Parameter, bool> parms = new Dictionary<Parameter, bool> (); string error_param = null; string user_data_param = null; string destroy_param = null; @@ -50,20 +49,20 @@ namespace GtkSharp.Generation { error_param = p.Name; continue; } - this.parms.Add (p); + bool special = false; if (p.PassAs != String.Empty && (p.Name != p.FromNative (p.Name))) - this.special.Add (true); + special = true; else if (p.Generatable is CallbackGen) - this.special.Add (true); - else - this.special.Add (false); + special = true; + + this.parms.Add (p, special); } } public bool HasOutParam { get { - foreach (Parameter p in parms) { + foreach (Parameter p in parms.Keys) { if (p.PassAs == "out") return true; } @@ -82,11 +81,11 @@ namespace GtkSharp.Generation { { string ret = ""; - for (int i = 0; i < parms.Count; i ++) { - if ((bool)special[i] == false) + foreach (Parameter p in parms.Keys) { + if (parms [p] == false) { continue; + } - Parameter p = parms [i] as Parameter; IGeneratable igen = p.Generatable; if (igen is CallbackGen) { @@ -114,13 +113,15 @@ namespace GtkSharp.Generation { string[] result = new string [parms.Count]; - for (int i = 0; i < parms.Count; i ++) { - Parameter p = parms [i] as Parameter; + int i = 0; + foreach (Parameter p in parms.Keys) { result [i] = p.PassAs == "" ? "" : p.PassAs + " "; - if (p.Generatable is CallbackGen) + if (p.Generatable is CallbackGen) { result [i] += p.Name + "_invoker.Handler"; - else - result [i] += ((bool)special[i]) ? "my" + p.Name : p.FromNative (p.Name); + } else { + result [i] += (parms [p]) ? "my" + p.Name : p.FromNative (p.Name); + } + i++; } return String.Join (", ", result); @@ -130,11 +131,11 @@ namespace GtkSharp.Generation { { string ret = ""; - for (int i = 0; i < parms.Count; i ++) { - if ((bool)special[i] == false) + foreach (Parameter p in parms.Keys) { + if (parms [p] == false) { continue; + } - Parameter p = parms [i] as Parameter; IGeneratable igen = p.Generatable; if (igen is CallbackGen) diff --git a/generator/ManualGen.cs b/generator/ManualGen.cs index 1d94916..b12fc73 100644 --- a/generator/ManualGen.cs +++ b/generator/ManualGen.cs @@ -1,58 +1,58 @@ -// GtkSharp.Generation.ManualGen.cs - Ungenerated handle type Generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2003 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class ManualGen : SimpleBase {
-
- string from_fmt;
-
- public ManualGen (string ctype, string type) : base (ctype, type, "null")
- {
- from_fmt = "new " + QualifiedName + "({0})";
- }
-
- public ManualGen (string ctype, string type, string from_fmt) : base (ctype, type, "null")
- {
- this.from_fmt = from_fmt;
- }
-
- public override string MarshalType {
- get {
- return "IntPtr";
- }
- }
-
- public override string CallByName (string var_name)
- {
- return var_name + " == null ? IntPtr.Zero : " + var_name + ".Handle";
- }
-
- public override string FromNative(string var)
- {
- return String.Format (from_fmt, var);
- }
- }
-}
-
+// GtkSharp.Generation.ManualGen.cs - Ungenerated handle type Generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public class ManualGen : SimpleBase { + + string from_fmt; + + public ManualGen (string ctype, string type) : base (ctype, type, "null") + { + from_fmt = "new " + QualifiedName + "({0})"; + } + + public ManualGen (string ctype, string type, string from_fmt) : base (ctype, type, "null") + { + this.from_fmt = from_fmt; + } + + public override string MarshalType { + get { + return "IntPtr"; + } + } + + public override string CallByName (string var_name) + { + return var_name + " == null ? IntPtr.Zero : " + var_name + ".Handle"; + } + + public override string FromNative(string var) + { + return String.Format (from_fmt, var); + } + } +} + diff --git a/generator/Method.cs b/generator/Method.cs index c2444bb..59711bf 100644 --- a/generator/Method.cs +++ b/generator/Method.cs @@ -1,338 +1,334 @@ -// GtkSharp.Generation.Method.cs - The Method Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class Method : MethodBase {
-
- private ReturnValue retval;
-
- private string call;
- private bool is_get, is_set;
- private bool deprecated = false;
- private bool win32_utf8_variant = false;
-
- public Method (XmlElement elem, ClassBase container_type) : base (elem, container_type)
- {
- this.retval = new ReturnValue (elem["return-type"]);
-
- if (!container_type.IsDeprecated && elem.HasAttribute ("deprecated")) {
- string attr = elem.GetAttribute ("deprecated");
- deprecated = attr == "1" || attr == "true";
- }
-
- if (elem.HasAttribute ("win32_utf8_variant")) {
- string attr = elem.GetAttribute ("win32_utf8_variant");
- win32_utf8_variant = attr == "1" || attr.ToLower () == "true";
- }
-
- if (Name == "GetType")
- Name = "GetGType";
- }
-
- public bool HasWin32Utf8Variant {
- get { return win32_utf8_variant; }
- }
-
- public bool IsDeprecated {
- get {
- return deprecated;
- }
- }
-
- public bool IsGetter {
- get {
- return is_get;
- }
- }
-
- public bool IsSetter {
- get {
- return is_set;
- }
- }
-
- public string ReturnType {
- get {
- return retval.CSType;
- }
- }
-
- public override bool Validate (LogWriter log)
- {
- log.Member = Name;
- if (!retval.Validate (log) || !base.Validate (log))
- return false;
-
- Parameters parms = Parameters;
- is_get = ((((parms.IsAccessor && retval.IsVoid) || (parms.Count == 0 && !retval.IsVoid)) || (parms.Count == 0 && !retval.IsVoid)) && HasGetterName);
- is_set = ((parms.IsAccessor || (parms.VisibleCount == 1 && retval.IsVoid)) && HasSetterName);
-
- call = "(" + (IsStatic ? "" : container_type.CallByName () + (parms.Count > 0 ? ", " : "")) + Body.GetCallString (is_set) + ")";
-
- return true;
- }
-
- private Method GetComplement ()
- {
- char complement;
- if (is_get)
- complement = 'S';
- else
- complement = 'G';
-
- return container_type.GetMethod (complement + BaseName.Substring (1));
- }
-
- public string Declaration {
- get {
- return retval.CSType + " " + Name + " (" + (Signature != null ? Signature.ToString() : "") + ");";
- }
- }
-
- private void GenerateDeclCommon (StreamWriter sw, ClassBase implementor)
- {
- if (IsStatic)
- sw.Write("static ");
- sw.Write (Safety);
- Method dup = null;
- if (container_type != null)
- dup = container_type.GetMethodRecursively (Name);
- if (implementor != null)
- dup = implementor.GetMethodRecursively (Name);
-
- if (Name == "ToString" && Parameters.Count == 0 && (!(container_type is InterfaceGen)|| implementor != null))
- sw.Write("override ");
- else if (Name == "GetGType" && container_type is ObjectGen)
- sw.Write("new ");
- else if (Modifiers == "new " || (dup != null && ((dup.Signature != null && Signature != null && dup.Signature.ToString() == Signature.ToString()) || (dup.Signature == null && Signature == null))))
- sw.Write("new ");
-
- if (is_get || is_set) {
- if (retval.IsVoid)
- sw.Write (Parameters.AccessorReturnType);
- else
- sw.Write(retval.CSType);
- sw.Write(" ");
- if (Name.StartsWith ("Get") || Name.StartsWith ("Set"))
- sw.Write (Name.Substring (3));
- else {
- int dot = Name.LastIndexOf ('.');
- if (dot != -1 && (Name.Substring (dot + 1, 3) == "Get" || Name.Substring (dot + 1, 3) == "Set"))
- sw.Write (Name.Substring (0, dot + 1) + Name.Substring (dot + 4));
- else
- sw.Write (Name);
- }
- sw.WriteLine(" { ");
- } else if (IsAccessor) {
- sw.Write (Signature.AccessorType + " " + Name + "(" + Signature.AsAccessor + ")");
- } else {
- sw.Write(retval.CSType + " " + Name + "(" + (Signature != null ? Signature.ToString() : "") + ")");
- }
- }
-
- public void GenerateDecl (StreamWriter sw)
- {
- if (IsStatic)
- return;
-
- if (is_get || is_set)
- {
- Method comp = GetComplement ();
- if (comp != null && is_set)
- return;
-
- sw.Write("\t\t");
- GenerateDeclCommon (sw, null);
-
- sw.Write("\t\t\t");
- sw.Write ((is_get) ? "get;" : "set;");
-
- if (comp != null && comp.is_set)
- sw.WriteLine (" set;");
- else
- sw.WriteLine ();
-
- sw.WriteLine ("\t\t}");
- }
- else
- {
- sw.Write("\t\t");
- GenerateDeclCommon (sw, null);
- sw.WriteLine (";");
- }
-
- Statistics.MethodCount++;
- }
-
- public void GenerateImport (StreamWriter sw)
- {
- string import_sig = IsStatic ? "" : container_type.MarshalType + " raw";
- import_sig += !IsStatic && Parameters.Count > 0 ? ", " : "";
- import_sig += Parameters.ImportSignature.ToString();
- sw.WriteLine("\t\t[DllImport(\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]");
- if (retval.MarshalType.StartsWith ("[return:"))
- sw.WriteLine("\t\t" + retval.MarshalType + " static extern " + Safety + retval.CSType + " " + CName + "(" + import_sig + ");");
- else
- sw.WriteLine("\t\tstatic extern " + Safety + retval.MarshalType + " " + CName + "(" + import_sig + ");");
- sw.WriteLine();
-
- if (HasWin32Utf8Variant) {
- sw.WriteLine("\t\t[DllImport(\"" + LibraryName + "\")]");
- if (retval.MarshalType.StartsWith ("[return:"))
- sw.WriteLine("\t\t" + retval.MarshalType + " static extern " + Safety + retval.CSType + " " + CName + "_utf8(" + import_sig + ");");
- else
- sw.WriteLine("\t\tstatic extern " + Safety + retval.MarshalType + " " + CName + "_utf8(" + import_sig + ");");
- sw.WriteLine();
- }
- }
-
- public void Generate (GenerationInfo gen_info, ClassBase implementor)
- {
- Method comp = null;
-
- gen_info.CurrentMember = Name;
-
- /* we are generated by the get Method, if there is one */
- if (is_set || is_get)
- {
- if (Modifiers != "new " && container_type.GetPropertyRecursively (Name.Substring (3)) != null)
- return;
- comp = GetComplement ();
- if (comp != null && is_set) {
- if (Parameters.AccessorReturnType == comp.ReturnType)
- return;
- else {
- is_set = false;
- call = "(Handle, " + Body.GetCallString (false) + ")";
- comp = null;
- }
- }
- /* some setters take more than one arg */
- if (comp != null && !comp.is_set)
- comp = null;
- }
-
- GenerateImport (gen_info.Writer);
- if (comp != null && retval.CSType == comp.Parameters.AccessorReturnType)
- comp.GenerateImport (gen_info.Writer);
-
- if (IsDeprecated)
- gen_info.Writer.WriteLine("\t\t[Obsolete]");
- gen_info.Writer.Write("\t\t");
- if (Protection != "")
- gen_info.Writer.Write("{0} ", Protection);
- GenerateDeclCommon (gen_info.Writer, implementor);
-
- if (is_get || is_set)
- {
- gen_info.Writer.Write ("\t\t\t");
- gen_info.Writer.Write ((is_get) ? "get" : "set");
- GenerateBody (gen_info, implementor, "\t");
- }
- else
- GenerateBody (gen_info, implementor, "");
-
- if (is_get || is_set)
- {
- if (comp != null && retval.CSType == comp.Parameters.AccessorReturnType)
- {
- gen_info.Writer.WriteLine ();
- gen_info.Writer.Write ("\t\t\tset");
- comp.GenerateBody (gen_info, implementor, "\t");
- }
- gen_info.Writer.WriteLine ();
- gen_info.Writer.WriteLine ("\t\t}");
- }
- else
- gen_info.Writer.WriteLine();
-
- gen_info.Writer.WriteLine();
-
- Statistics.MethodCount++;
- }
-
- public void GenerateBody (GenerationInfo gen_info, ClassBase implementor, string indent)
- {
- StreamWriter sw = gen_info.Writer;
- sw.WriteLine(" {");
- if (!IsStatic && implementor != null)
- implementor.Prepare (sw, indent + "\t\t\t");
- if (IsAccessor)
- Body.InitAccessor (sw, Signature, indent);
- Body.Initialize(gen_info, is_get, is_set, indent);
-
- if (HasWin32Utf8Variant) {
- if (!retval.IsVoid)
- sw.WriteLine(indent + "\t\t\t" + retval.MarshalType + " raw_ret;");
- sw.WriteLine(indent + "\t\t\t" + "if (Environment.OSVersion.Platform == PlatformID.Win32NT ||");
- sw.WriteLine(indent + "\t\t\t" + " Environment.OSVersion.Platform == PlatformID.Win32S ||");
- sw.WriteLine(indent + "\t\t\t" + " Environment.OSVersion.Platform == PlatformID.Win32Windows ||");
- sw.WriteLine(indent + "\t\t\t" + " Environment.OSVersion.Platform == PlatformID.WinCE)");
- if (retval.IsVoid) {
- sw.WriteLine(indent + "\t\t\t\t" + CName + "_utf8" + call + ";");
- sw.WriteLine(indent + "\t\t\t" + "else");
- sw.WriteLine(indent + "\t\t\t\t" + CName + call + ";");
- } else {
- sw.WriteLine(indent + "\t\t\t\traw_ret = " + CName + "_utf8" + call + ";");
- sw.WriteLine(indent + "\t\t\t" + "else");
- sw.WriteLine(indent + "\t\t\t\traw_ret = " + CName + call + ";");
- sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";");
- }
- } else {
- sw.Write(indent + "\t\t\t");
- if (retval.IsVoid)
- sw.WriteLine(CName + call + ";");
- else {
- sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";");
- sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";");
- }
- }
-
- if (!IsStatic && implementor != null)
- implementor.Finish (sw, indent + "\t\t\t");
- Body.Finish (sw, indent);
- Body.HandleException (sw, indent);
-
- if (is_get && Parameters.Count > 0)
- sw.WriteLine (indent + "\t\t\treturn " + Parameters.AccessorName + ";");
- else if (!retval.IsVoid)
- sw.WriteLine (indent + "\t\t\treturn ret;");
- else if (IsAccessor)
- Body.FinishAccessor (sw, Signature, indent);
-
- sw.Write(indent + "\t\t}");
- }
-
- bool IsAccessor {
- get {
- return retval.IsVoid && Signature.IsAccessor;
- }
- }
- }
-}
-
+// GtkSharp.Generation.Method.cs - The Method Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Xml; + + public class Method : MethodBase { + + private ReturnValue retval; + + private string call; + private bool is_get, is_set; + private bool deprecated = false; + private bool win32_utf8_variant = false; + + public Method (XmlElement elem, ClassBase container_type) : base (elem, container_type) + { + this.retval = new ReturnValue (elem["return-type"]); + + if (!container_type.IsDeprecated) { + deprecated = elem.GetAttributeAsBoolean ("deprecated"); + } + + win32_utf8_variant = elem.GetAttributeAsBoolean ("win32_utf8_variant"); + + if (Name == "GetType") + Name = "GetGType"; + } + + public bool HasWin32Utf8Variant { + get { return win32_utf8_variant; } + } + + public bool IsDeprecated { + get { + return deprecated; + } + } + + public bool IsGetter { + get { + return is_get; + } + } + + public bool IsSetter { + get { + return is_set; + } + } + + public string ReturnType { + get { + return retval.CSType; + } + } + + public override bool Validate (LogWriter log) + { + log.Member = Name; + if (!retval.Validate (log) || !base.Validate (log)) + return false; + + Parameters parms = Parameters; + is_get = ((((parms.IsAccessor && retval.IsVoid) || (parms.Count == 0 && !retval.IsVoid)) || (parms.Count == 0 && !retval.IsVoid)) && HasGetterName); + is_set = ((parms.IsAccessor || (parms.VisibleCount == 1 && retval.IsVoid)) && HasSetterName); + + call = "(" + (IsStatic ? "" : container_type.CallByName () + (parms.Count > 0 ? ", " : "")) + Body.GetCallString (is_set) + ")"; + + return true; + } + + private Method GetComplement () + { + char complement; + if (is_get) + complement = 'S'; + else + complement = 'G'; + + return container_type.GetMethod (complement + BaseName.Substring (1)); + } + + public string Declaration { + get { + return retval.CSType + " " + Name + " (" + (Signature != null ? Signature.ToString() : "") + ");"; + } + } + + private void GenerateDeclCommon (StreamWriter sw, ClassBase implementor) + { + if (IsStatic) + sw.Write("static "); + sw.Write (Safety); + Method dup = null; + if (container_type != null) + dup = container_type.GetMethodRecursively (Name); + if (implementor != null) + dup = implementor.GetMethodRecursively (Name); + + if (Name == "ToString" && Parameters.Count == 0 && (!(container_type is InterfaceGen)|| implementor != null)) + sw.Write("override "); + else if (Name == "GetGType" && container_type is ObjectGen) + sw.Write("new "); + else if (Modifiers == "new " || (dup != null && ((dup.Signature != null && Signature != null && dup.Signature.ToString() == Signature.ToString()) || (dup.Signature == null && Signature == null)))) + sw.Write("new "); + + if (is_get || is_set) { + if (retval.IsVoid) + sw.Write (Parameters.AccessorReturnType); + else + sw.Write(retval.CSType); + sw.Write(" "); + if (Name.StartsWith ("Get") || Name.StartsWith ("Set")) + sw.Write (Name.Substring (3)); + else { + int dot = Name.LastIndexOf ('.'); + if (dot != -1 && (Name.Substring (dot + 1, 3) == "Get" || Name.Substring (dot + 1, 3) == "Set")) + sw.Write (Name.Substring (0, dot + 1) + Name.Substring (dot + 4)); + else + sw.Write (Name); + } + sw.WriteLine(" { "); + } else if (IsAccessor) { + sw.Write (Signature.AccessorType + " " + Name + "(" + Signature.AsAccessor + ")"); + } else { + sw.Write(retval.CSType + " " + Name + "(" + (Signature != null ? Signature.ToString() : "") + ")"); + } + } + + public void GenerateDecl (StreamWriter sw) + { + if (IsStatic) + return; + + if (is_get || is_set) + { + Method comp = GetComplement (); + if (comp != null && is_set) + return; + + sw.Write("\t\t"); + GenerateDeclCommon (sw, null); + + sw.Write("\t\t\t"); + sw.Write ((is_get) ? "get;" : "set;"); + + if (comp != null && comp.is_set) + sw.WriteLine (" set;"); + else + sw.WriteLine (); + + sw.WriteLine ("\t\t}"); + } + else + { + sw.Write("\t\t"); + GenerateDeclCommon (sw, null); + sw.WriteLine (";"); + } + + Statistics.MethodCount++; + } + + public void GenerateImport (StreamWriter sw) + { + string import_sig = IsStatic ? "" : container_type.MarshalType + " raw"; + import_sig += !IsStatic && Parameters.Count > 0 ? ", " : ""; + import_sig += Parameters.ImportSignature.ToString(); + sw.WriteLine("\t\t[DllImport(\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]"); + if (retval.MarshalType.StartsWith ("[return:")) + sw.WriteLine("\t\t" + retval.MarshalType + " static extern " + Safety + retval.CSType + " " + CName + "(" + import_sig + ");"); + else + sw.WriteLine("\t\tstatic extern " + Safety + retval.MarshalType + " " + CName + "(" + import_sig + ");"); + sw.WriteLine(); + + if (HasWin32Utf8Variant) { + sw.WriteLine("\t\t[DllImport(\"" + LibraryName + "\")]"); + if (retval.MarshalType.StartsWith ("[return:")) + sw.WriteLine("\t\t" + retval.MarshalType + " static extern " + Safety + retval.CSType + " " + CName + "_utf8(" + import_sig + ");"); + else + sw.WriteLine("\t\tstatic extern " + Safety + retval.MarshalType + " " + CName + "_utf8(" + import_sig + ");"); + sw.WriteLine(); + } + } + + public void Generate (GenerationInfo gen_info, ClassBase implementor) + { + Method comp = null; + + gen_info.CurrentMember = Name; + + /* we are generated by the get Method, if there is one */ + if (is_set || is_get) + { + if (Modifiers != "new " && container_type.GetPropertyRecursively (Name.Substring (3)) != null) + return; + comp = GetComplement (); + if (comp != null && is_set) { + if (Parameters.AccessorReturnType == comp.ReturnType) + return; + else { + is_set = false; + call = "(Handle, " + Body.GetCallString (false) + ")"; + comp = null; + } + } + /* some setters take more than one arg */ + if (comp != null && !comp.is_set) + comp = null; + } + + GenerateImport (gen_info.Writer); + if (comp != null && retval.CSType == comp.Parameters.AccessorReturnType) + comp.GenerateImport (gen_info.Writer); + + if (IsDeprecated) + gen_info.Writer.WriteLine("\t\t[Obsolete]"); + gen_info.Writer.Write("\t\t"); + if (Protection != "") + gen_info.Writer.Write("{0} ", Protection); + GenerateDeclCommon (gen_info.Writer, implementor); + + if (is_get || is_set) + { + gen_info.Writer.Write ("\t\t\t"); + gen_info.Writer.Write ((is_get) ? "get" : "set"); + GenerateBody (gen_info, implementor, "\t"); + } + else + GenerateBody (gen_info, implementor, ""); + + if (is_get || is_set) + { + if (comp != null && retval.CSType == comp.Parameters.AccessorReturnType) + { + gen_info.Writer.WriteLine (); + gen_info.Writer.Write ("\t\t\tset"); + comp.GenerateBody (gen_info, implementor, "\t"); + } + gen_info.Writer.WriteLine (); + gen_info.Writer.WriteLine ("\t\t}"); + } + else + gen_info.Writer.WriteLine(); + + gen_info.Writer.WriteLine(); + + Statistics.MethodCount++; + } + + public void GenerateBody (GenerationInfo gen_info, ClassBase implementor, string indent) + { + StreamWriter sw = gen_info.Writer; + sw.WriteLine(" {"); + if (!IsStatic && implementor != null) + implementor.Prepare (sw, indent + "\t\t\t"); + if (IsAccessor) + Body.InitAccessor (sw, Signature, indent); + Body.Initialize(gen_info, is_get, is_set, indent); + + if (HasWin32Utf8Variant) { + if (!retval.IsVoid) + sw.WriteLine(indent + "\t\t\t" + retval.MarshalType + " raw_ret;"); + sw.WriteLine(indent + "\t\t\t" + "if (Environment.OSVersion.Platform == PlatformID.Win32NT ||"); + sw.WriteLine(indent + "\t\t\t" + " Environment.OSVersion.Platform == PlatformID.Win32S ||"); + sw.WriteLine(indent + "\t\t\t" + " Environment.OSVersion.Platform == PlatformID.Win32Windows ||"); + sw.WriteLine(indent + "\t\t\t" + " Environment.OSVersion.Platform == PlatformID.WinCE)"); + if (retval.IsVoid) { + sw.WriteLine(indent + "\t\t\t\t" + CName + "_utf8" + call + ";"); + sw.WriteLine(indent + "\t\t\t" + "else"); + sw.WriteLine(indent + "\t\t\t\t" + CName + call + ";"); + } else { + sw.WriteLine(indent + "\t\t\t\traw_ret = " + CName + "_utf8" + call + ";"); + sw.WriteLine(indent + "\t\t\t" + "else"); + sw.WriteLine(indent + "\t\t\t\traw_ret = " + CName + call + ";"); + sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";"); + } + } else { + sw.Write(indent + "\t\t\t"); + if (retval.IsVoid) + sw.WriteLine(CName + call + ";"); + else { + sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";"); + sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";"); + } + } + + if (!IsStatic && implementor != null) + implementor.Finish (sw, indent + "\t\t\t"); + Body.Finish (sw, indent); + Body.HandleException (sw, indent); + + if (is_get && Parameters.Count > 0) + sw.WriteLine (indent + "\t\t\treturn " + Parameters.AccessorName + ";"); + else if (!retval.IsVoid) + sw.WriteLine (indent + "\t\t\treturn ret;"); + else if (IsAccessor) + Body.FinishAccessor (sw, Signature, indent); + + sw.Write(indent + "\t\t}"); + } + + bool IsAccessor { + get { + return retval.IsVoid && Signature.IsAccessor; + } + } + } +} + diff --git a/generator/MethodBase.cs b/generator/MethodBase.cs index ce6aa72..d6912d0 100644 --- a/generator/MethodBase.cs +++ b/generator/MethodBase.cs @@ -1,183 +1,183 @@ -// GtkSharp.Generation.MethodBase.cs - function element base class.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2004-2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Xml;
-
- public abstract class MethodBase {
-
- protected XmlElement elem;
- protected ClassBase container_type;
- protected Parameters parms;
- string mods = String.Empty;
- string name;
- private string protection = "public";
-
- protected MethodBase (XmlElement elem, ClassBase container_type)
- {
- this.elem = elem;
- this.container_type = container_type;
- this.name = elem.GetAttribute ("name");
- parms = new Parameters (elem ["parameters"]);
- IsStatic = elem.GetAttribute ("shared") == "true";
- if (elem.HasAttribute ("new_flag"))
- mods = "new ";
- if (elem.HasAttribute ("accessibility")) {
- string attr = elem.GetAttribute ("accessibility");
- switch (attr) {
- case "public":
- case "protected":
- case "internal":
- case "private":
- case "protected internal":
- protection = attr;
- break;
- }
- }
- }
-
- protected string BaseName {
- get {
- string name = Name;
- int idx = Name.LastIndexOf (".");
- if (idx > 0)
- name = Name.Substring (idx + 1);
- return name;
- }
- }
-
- MethodBody body;
- public MethodBody Body {
- get {
- if (body == null)
- body = new MethodBody (parms);
- return body;
- }
- }
-
- public virtual string CName {
- get {
- return SymbolTable.Table.MangleName (elem.GetAttribute ("cname"));
- }
- }
-
- protected bool HasGetterName {
- get {
- string name = BaseName;
- if (name.Length <= 3)
- return false;
- if (name.StartsWith ("Get") || name.StartsWith ("Has"))
- return Char.IsUpper (name [3]);
- else if (name.StartsWith ("Is"))
- return Char.IsUpper (name [2]);
- else
- return false;
- }
- }
-
- protected bool HasSetterName {
- get {
- string name = BaseName;
- if (name.Length <= 3)
- return false;
-
- return name.StartsWith ("Set") && Char.IsUpper (name [3]);
- }
- }
-
- public bool IsStatic {
- get {
- return parms.Static;
- }
- set {
- parms.Static = value;
- }
- }
-
- public string LibraryName {
- get {
- if (elem.HasAttribute ("library"))
- return elem.GetAttribute ("library");
- return container_type.LibraryName;
- }
- }
-
- public string Modifiers {
- get {
- return mods;
- }
- set {
- mods = value;
- }
- }
-
- public string Name {
- get {
- return name;
- }
- set {
- name = value;
- }
- }
-
- public Parameters Parameters {
- get {
- return parms;
- }
- }
-
-
- public string Protection {
- get { return protection; }
- set { protection = value; }
- }
-
- protected string Safety {
- get {
- return Body.ThrowsException && !(container_type is InterfaceGen) ? "unsafe " : "";
- }
- }
-
- Signature sig;
- public Signature Signature {
- get {
- if (sig == null)
- sig = new Signature (parms);
- return sig;
- }
- }
-
- public virtual bool Validate (LogWriter log)
- {
- log.Member = Name;
- if (!parms.Validate (log)) {
- Statistics.ThrottledCount++;
- return false;
- }
-
- return true;
- }
- }
-}
-
+// GtkSharp.Generation.MethodBase.cs - function element base class. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004-2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Xml; + + public abstract class MethodBase { + + protected XmlElement elem; + protected ClassBase container_type; + protected Parameters parms; + string mods = String.Empty; + string name; + private string protection = "public"; + + protected MethodBase (XmlElement elem, ClassBase container_type) + { + this.elem = elem; + this.container_type = container_type; + this.name = elem.GetAttribute ("name"); + parms = new Parameters (elem ["parameters"]); + IsStatic = elem.GetAttribute ("shared") == "true"; + if (elem.GetAttributeAsBoolean ("new_flag")) + mods = "new "; + if (elem.HasAttribute ("accessibility")) { + string attr = elem.GetAttribute ("accessibility"); + switch (attr) { + case "public": + case "protected": + case "internal": + case "private": + case "protected internal": + protection = attr; + break; + } + } + } + + protected string BaseName { + get { + string name = Name; + int idx = Name.LastIndexOf ("."); + if (idx > 0) + name = Name.Substring (idx + 1); + return name; + } + } + + MethodBody body; + public MethodBody Body { + get { + if (body == null) + body = new MethodBody (parms); + return body; + } + } + + public virtual string CName { + get { + return SymbolTable.Table.MangleName (elem.GetAttribute ("cname")); + } + } + + protected bool HasGetterName { + get { + string name = BaseName; + if (name.Length <= 3) + return false; + if (name.StartsWith ("Get") || name.StartsWith ("Has")) + return Char.IsUpper (name [3]); + else if (name.StartsWith ("Is")) + return Char.IsUpper (name [2]); + else + return false; + } + } + + protected bool HasSetterName { + get { + string name = BaseName; + if (name.Length <= 3) + return false; + + return name.StartsWith ("Set") && Char.IsUpper (name [3]); + } + } + + public bool IsStatic { + get { + return parms.Static; + } + set { + parms.Static = value; + } + } + + public string LibraryName { + get { + if (elem.HasAttribute ("library")) + return elem.GetAttribute ("library"); + return container_type.LibraryName; + } + } + + public string Modifiers { + get { + return mods; + } + set { + mods = value; + } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public Parameters Parameters { + get { + return parms; + } + } + + + public string Protection { + get { return protection; } + set { protection = value; } + } + + protected string Safety { + get { + return Body.ThrowsException && !(container_type is InterfaceGen) ? "unsafe " : ""; + } + } + + Signature sig; + public Signature Signature { + get { + if (sig == null) + sig = new Signature (parms); + return sig; + } + } + + public virtual bool Validate (LogWriter log) + { + log.Member = Name; + if (!parms.Validate (log)) { + Statistics.ThrottledCount++; + return false; + } + + return true; + } + } +} + diff --git a/generator/MethodBody.cs b/generator/MethodBody.cs index 8e66657..1afb636 100644 --- a/generator/MethodBody.cs +++ b/generator/MethodBody.cs @@ -1,180 +1,180 @@ -// GtkSharp.Generation.MethodBody.cs - The MethodBody Generation Class.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
-
- public class MethodBody {
-
- Parameters parameters;
-
- public MethodBody (Parameters parms)
- {
- parameters = parms;
- }
-
- private string CastFromInt (string type)
- {
- return type != "int" ? "(" + type + ") " : "";
- }
-
- public string GetCallString (bool is_set)
- {
- if (parameters.Count == 0)
- return String.Empty;
-
- string[] result = new string [parameters.Count];
- for (int i = 0; i < parameters.Count; i++) {
- Parameter p = parameters [i];
- IGeneratable igen = p.Generatable;
-
- bool is_prop = is_set && i == 0;
-
- if (i > 0 && parameters [i - 1].IsString && p.IsLength && p.PassAs == String.Empty) {
- string string_name = (i == 1 && is_set) ? "value" : parameters [i - 1].Name;
- result[i] = igen.CallByName (CastFromInt (p.CSType) + "System.Text.Encoding.UTF8.GetByteCount (" + string_name + ")");
- continue;
- }
-
- if (is_prop)
- p.CallName = "value";
- else
- p.CallName = p.Name;
- string call_parm = p.CallString;
-
- if (p.IsUserData && parameters.IsHidden (p) && !parameters.HideData &&
- (i == 0 || parameters [i - 1].Scope != "notified")) {
- call_parm = "IntPtr.Zero";
- }
-
- result [i] += call_parm;
- }
-
- return String.Join (", ", result);
- }
-
- public void Initialize (GenerationInfo gen_info)
- {
- Initialize (gen_info, false, false, String.Empty);
- }
-
- public void Initialize (GenerationInfo gen_info, bool is_get, bool is_set, string indent)
- {
- if (parameters.Count == 0)
- return;
-
- StreamWriter sw = gen_info.Writer;
- for (int i = 0; i < parameters.Count; i++) {
- Parameter p = parameters [i];
-
- IGeneratable gen = p.Generatable;
- string name = p.Name;
- if (is_set)
- name = "value";
-
- p.CallName = name;
- foreach (string prep in p.Prepare)
- sw.WriteLine (indent + "\t\t\t" + prep);
-
- if (gen is CallbackGen) {
- CallbackGen cbgen = gen as CallbackGen;
- string wrapper = cbgen.GenWrapper(gen_info);
- switch (p.Scope) {
- case "notified":
- sw.WriteLine (indent + "\t\t\t{0} {1}_wrapper = new {0} ({1});", wrapper, name);
- sw.WriteLine (indent + "\t\t\tIntPtr {0};", parameters [i + 1].Name);
- sw.WriteLine (indent + "\t\t\t{0} {1};", parameters [i + 2].CSType, parameters [i + 2].Name);
- sw.WriteLine (indent + "\t\t\tif ({0} == null) {{", name);
- sw.WriteLine (indent + "\t\t\t\t{0} = IntPtr.Zero;", parameters [i + 1].Name);
- sw.WriteLine (indent + "\t\t\t\t{0} = null;", parameters [i + 2].Name);
- sw.WriteLine (indent + "\t\t\t} else {");
- sw.WriteLine (indent + "\t\t\t\t{0} = (IntPtr) GCHandle.Alloc ({1}_wrapper);", parameters [i + 1].Name, name);
- sw.WriteLine (indent + "\t\t\t\t{0} = GLib.DestroyHelper.NotifyHandler;", parameters [i + 2].Name, parameters [i + 2].CSType);
- sw.WriteLine (indent + "\t\t\t}");
- break;
-
- case "async":
- sw.WriteLine (indent + "\t\t\t{0} {1}_wrapper = new {0} ({1});", wrapper, name);
- sw.WriteLine (indent + "\t\t\t{0}_wrapper.PersistUntilCalled ();", name);
- break;
- case "call":
- default:
- if (p.Scope == String.Empty)
- Console.WriteLine (gen_info.CurrentMember + " - defaulting " + gen.Name + " param to 'call' scope. Specify callback scope (call|async|notified) attribute with fixup.");
- sw.WriteLine (indent + "\t\t\t{0} {1}_wrapper = new {0} ({1});", wrapper, name);
- break;
- }
- }
- }
-
- if (ThrowsException)
- sw.WriteLine (indent + "\t\t\tIntPtr error = IntPtr.Zero;");
- }
-
- public void InitAccessor (StreamWriter sw, Signature sig, string indent)
- {
- sw.WriteLine (indent + "\t\t\t" + sig.AccessorType + " " + sig.AccessorName + ";");
- }
-
- public void Finish (StreamWriter sw, string indent)
- {
- foreach (Parameter p in parameters) {
- if (parameters.IsHidden (p))
- continue;
- foreach (string s in p.Finish)
- sw.WriteLine(indent + "\t\t\t" + s);
- }
- }
-
- public void FinishAccessor (StreamWriter sw, Signature sig, string indent)
- {
- sw.WriteLine (indent + "\t\t\treturn " + sig.AccessorName + ";");
- }
-
- public void HandleException (StreamWriter sw, string indent)
- {
- if (!ThrowsException)
- return;
- sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new GLib.GException (error);");
- }
-
- public bool ThrowsException {
- get {
- int idx = parameters.Count - 1;
-
- while (idx >= 0) {
- if (parameters [idx].IsUserData)
- idx--;
- else if (parameters [idx].CType == "GError**")
- return true;
- else
- break;
- }
- return false;
- }
- }
- }
-}
-
+// GtkSharp.Generation.MethodBody.cs - The MethodBody Generation Class. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + + public class MethodBody { + + Parameters parameters; + + public MethodBody (Parameters parms) + { + parameters = parms; + } + + private string CastFromInt (string type) + { + return type != "int" ? "(" + type + ") " : ""; + } + + public string GetCallString (bool is_set) + { + if (parameters.Count == 0) + return String.Empty; + + string[] result = new string [parameters.Count]; + for (int i = 0; i < parameters.Count; i++) { + Parameter p = parameters [i]; + IGeneratable igen = p.Generatable; + + bool is_prop = is_set && i == 0; + + if (i > 0 && parameters [i - 1].IsString && p.IsLength && p.PassAs == String.Empty) { + string string_name = (i == 1 && is_set) ? "value" : parameters [i - 1].Name; + result[i] = igen.CallByName (CastFromInt (p.CSType) + "System.Text.Encoding.UTF8.GetByteCount (" + string_name + ")"); + continue; + } + + if (is_prop) + p.CallName = "value"; + else + p.CallName = p.Name; + string call_parm = p.CallString; + + if (p.IsUserData && parameters.IsHidden (p) && !parameters.HideData && + (i == 0 || parameters [i - 1].Scope != "notified")) { + call_parm = "IntPtr.Zero"; + } + + result [i] += call_parm; + } + + return String.Join (", ", result); + } + + public void Initialize (GenerationInfo gen_info) + { + Initialize (gen_info, false, false, String.Empty); + } + + public void Initialize (GenerationInfo gen_info, bool is_get, bool is_set, string indent) + { + if (parameters.Count == 0) + return; + + StreamWriter sw = gen_info.Writer; + for (int i = 0; i < parameters.Count; i++) { + Parameter p = parameters [i]; + + IGeneratable gen = p.Generatable; + string name = p.Name; + if (is_set) + name = "value"; + + p.CallName = name; + foreach (string prep in p.Prepare) + sw.WriteLine (indent + "\t\t\t" + prep); + + if (gen is CallbackGen) { + CallbackGen cbgen = gen as CallbackGen; + string wrapper = cbgen.GenWrapper(gen_info); + switch (p.Scope) { + case "notified": + sw.WriteLine (indent + "\t\t\t{0} {1}_wrapper = new {0} ({1});", wrapper, name); + sw.WriteLine (indent + "\t\t\tIntPtr {0};", parameters [i + 1].Name); + sw.WriteLine (indent + "\t\t\t{0} {1};", parameters [i + 2].CSType, parameters [i + 2].Name); + sw.WriteLine (indent + "\t\t\tif ({0} == null) {{", name); + sw.WriteLine (indent + "\t\t\t\t{0} = IntPtr.Zero;", parameters [i + 1].Name); + sw.WriteLine (indent + "\t\t\t\t{0} = null;", parameters [i + 2].Name); + sw.WriteLine (indent + "\t\t\t} else {"); + sw.WriteLine (indent + "\t\t\t\t{0} = (IntPtr) GCHandle.Alloc ({1}_wrapper);", parameters [i + 1].Name, name); + sw.WriteLine (indent + "\t\t\t\t{0} = GLib.DestroyHelper.NotifyHandler;", parameters [i + 2].Name, parameters [i + 2].CSType); + sw.WriteLine (indent + "\t\t\t}"); + break; + + case "async": + sw.WriteLine (indent + "\t\t\t{0} {1}_wrapper = new {0} ({1});", wrapper, name); + sw.WriteLine (indent + "\t\t\t{0}_wrapper.PersistUntilCalled ();", name); + break; + case "call": + default: + if (p.Scope == String.Empty) + Console.WriteLine (gen_info.CurrentMember + " - defaulting " + gen.Name + " param to 'call' scope. Specify callback scope (call|async|notified) attribute with fixup."); + sw.WriteLine (indent + "\t\t\t{0} {1}_wrapper = new {0} ({1});", wrapper, name); + break; + } + } + } + + if (ThrowsException) + sw.WriteLine (indent + "\t\t\tIntPtr error = IntPtr.Zero;"); + } + + public void InitAccessor (StreamWriter sw, Signature sig, string indent) + { + sw.WriteLine (indent + "\t\t\t" + sig.AccessorType + " " + sig.AccessorName + ";"); + } + + public void Finish (StreamWriter sw, string indent) + { + foreach (Parameter p in parameters) { + if (parameters.IsHidden (p)) + continue; + foreach (string s in p.Finish) + sw.WriteLine(indent + "\t\t\t" + s); + } + } + + public void FinishAccessor (StreamWriter sw, Signature sig, string indent) + { + sw.WriteLine (indent + "\t\t\treturn " + sig.AccessorName + ";"); + } + + public void HandleException (StreamWriter sw, string indent) + { + if (!ThrowsException) + return; + sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new GLib.GException (error);"); + } + + public bool ThrowsException { + get { + int idx = parameters.Count - 1; + + while (idx >= 0) { + if (parameters [idx].IsUserData) + idx--; + else if (parameters [idx].CType == "GError**") + return true; + else + break; + } + return false; + } + } + } +} + diff --git a/generator/ObjectBase.cs b/generator/ObjectBase.cs index 31a86db..1db78d5 100644 --- a/generator/ObjectBase.cs +++ b/generator/ObjectBase.cs @@ -24,6 +24,7 @@ namespace GtkSharp.Generation { using System; using System.Collections; + using System.Collections.Generic; using System.IO; using System.Xml; @@ -32,12 +33,12 @@ namespace GtkSharp.Generation { protected string class_struct_name = null; bool class_fields_valid; // false if the class structure contains a bitfield or fields of unknown types ArrayList class_members = new ArrayList (); - protected ArrayList class_fields = new ArrayList (); + protected IList<ClassField> class_fields = new List<ClassField> (); // The default handlers of these signals need to be overridden with g_signal_override_class_closure - protected ArrayList virtual_methods = new ArrayList (); + protected IList<GObjectVM> virtual_methods = new List<GObjectVM> (); // virtual methods that are generated as an IntPtr in the class struct - protected ArrayList hidden_vms = new ArrayList (); - protected ArrayList interface_vms = new ArrayList (); + protected IList<VirtualMethod> hidden_vms = new List<VirtualMethod> (); + protected IList<InterfaceVM> interface_vms = new List<InterfaceVM> (); protected Hashtable sigs = new Hashtable(); protected ObjectBase (XmlElement ns, XmlElement elem, bool is_interface) : base (ns, elem) @@ -69,7 +70,7 @@ namespace GtkSharp.Generation { else signal_vms.Add (member.GetAttribute ("field_name"), member); - if (member.GetAttribute ("hidden") != "1") { + if (!member.GetAttributeAsBoolean ("hidden")) { string name = member.GetAttribute("name"); while (sigs.ContainsKey(name)) name += "mangled"; @@ -126,17 +127,18 @@ namespace GtkSharp.Generation { vm = new DefaultSignalHandler (vm_elem, this); else if (is_interface) { string target_name = vm_elem.HasAttribute ("target_method") ? vm_elem.GetAttribute ("target_method") : vm_elem.GetAttribute ("name"); - vm = new InterfaceVM (vm_elem, methods [target_name] as Method, this); + vm = new InterfaceVM (vm_elem, GetMethod (target_name), this); } else vm = new GObjectVM (vm_elem, this); - if (vm_elem.GetAttribute ("padding") == "true" || vm_elem.GetAttribute ("hidden") == "1") + if (vm_elem.GetAttributeAsBoolean ("padding") || vm_elem.GetAttributeAsBoolean ("hidden")) hidden_vms.Add (vm); else { - if (vm is GObjectVM) - virtual_methods.Add (vm); - else - interface_vms.Add (vm); + if (vm is GObjectVM) { + virtual_methods.Add ((GObjectVM)vm); + } else { + interface_vms.Add ((InterfaceVM)vm); + } } if (vm.CName != "") class_members.Add (vm); @@ -273,7 +275,7 @@ namespace GtkSharp.Generation { if (!vm.Validate (log)) invalids.Add (vm); - foreach (VirtualMethod invalid_vm in invalids) { + foreach (GObjectVM invalid_vm in invalids) { virtual_methods.Remove (invalid_vm); hidden_vms.Add (invalid_vm); } diff --git a/generator/ObjectField.cs b/generator/ObjectField.cs index 47e0156..f0edd1a 100644 --- a/generator/ObjectField.cs +++ b/generator/ObjectField.cs @@ -34,7 +34,7 @@ namespace GtkSharp.Generation { protected override bool Writable { get { - return elem.GetAttribute ("writeable") == "true"; + return elem.GetAttributeAsBoolean ("writeable"); } } diff --git a/generator/ObjectGen.cs b/generator/ObjectGen.cs index e7ef13d..774a797 100644 --- a/generator/ObjectGen.cs +++ b/generator/ObjectGen.cs @@ -1,416 +1,427 @@ -// GtkSharp.Generation.ObjectGen.cs - The Object Generatable.
-//
-// Author: Mike Kestner <mkestner@ximian.com>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Text;
- using System.Xml;
-
- public class ObjectGen : ObjectBase {
-
- private ArrayList custom_attrs = new ArrayList();
- private ArrayList strings = new ArrayList();
- private Hashtable childprops = new Hashtable();
- private static Hashtable dirs = new Hashtable ();
-
- public ObjectGen (XmlElement ns, XmlElement elem) : base (ns, elem, false)
- {
- foreach (XmlNode node in elem.ChildNodes) {
- if (!(node is XmlElement)) continue;
- XmlElement member = (XmlElement) node;
- if (member.HasAttribute ("hidden") && member.GetAttribute ("hidden") == "1") continue;
-
- switch (node.Name) {
- case "callback":
- Statistics.IgnoreCount++;
- break;
-
- case "custom-attribute":
- custom_attrs.Add (member.InnerXml);
- break;
-
- case "static-string":
- strings.Add (node);
- break;
-
- case "childprop":
- string name = member.GetAttribute ("name");
- while (childprops.ContainsKey (name))
- name += "mangled";
- childprops.Add (name, new ChildProperty (member, this));
- break;
-
- default:
- if (!IsNodeNameHandled (node.Name))
- Console.WriteLine ("Unexpected node " + node.Name + " in " + CName);
- break;
- }
- }
- }
-
- public override string CallByName (string var, bool owned)
- {
- return String.Format ("{0} == null ? IntPtr.Zero : {0}.{1}", var, owned ? "OwnedHandle" : "Handle");
- }
-
- public override bool Validate ()
- {
- LogWriter log = new LogWriter (QualifiedName);
-
- ArrayList invalids = new ArrayList ();
-
- foreach (ChildProperty prop in childprops.Values) {
- if (!prop.Validate (log))
- invalids.Add (prop);
- }
- foreach (ChildProperty prop in invalids)
- childprops.Remove (prop);
-
- return base.Validate ();
- }
-
- private bool DisableVoidCtor {
- get {
- return Elem.HasAttribute ("disable_void_ctor");
- }
- }
-
- private class DirectoryInfo {
- public string assembly_name;
- public Hashtable objects;
-
- public DirectoryInfo (string assembly_name) {
- this.assembly_name = assembly_name;
- objects = new Hashtable ();
- }
- }
-
- private static DirectoryInfo GetDirectoryInfo (string dir, string assembly_name)
- {
- DirectoryInfo result;
-
- if (dirs.ContainsKey (dir)) {
- result = dirs [dir] as DirectoryInfo;
- if (result.assembly_name != assembly_name) {
- Console.WriteLine ("Can't put multiple assemblies in one directory.");
- return null;
- }
-
- return result;
- }
-
- result = new DirectoryInfo (assembly_name);
- dirs.Add (dir, result);
-
- return result;
- }
-
- public override void Generate (GenerationInfo gen_info)
- {
- gen_info.CurrentType = QualifiedName;
-
- string asm_name = gen_info.AssemblyName.Length == 0 ? NS.ToLower () + "-sharp" : gen_info.AssemblyName;
- DirectoryInfo di = GetDirectoryInfo (gen_info.Dir, asm_name);
-
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
-
- sw.WriteLine ("namespace " + NS + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
- sw.WriteLine ("\tusing System.Collections;");
- sw.WriteLine ("\tusing System.Runtime.InteropServices;");
- sw.WriteLine ();
-
- SymbolTable table = SymbolTable.Table;
-
- sw.WriteLine ("#region Autogenerated code");
- if (IsDeprecated)
- sw.WriteLine ("\t[Obsolete]");
- foreach (string attr in custom_attrs)
- sw.WriteLine ("\t" + attr);
- sw.Write ("\t{0} partial {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : "");
- string cs_parent = table.GetCSType(Elem.GetAttribute("parent"));
- if (cs_parent != "") {
- di.objects.Add (CName, QualifiedName);
- sw.Write (" : " + cs_parent);
- }
- foreach (string iface in interfaces) {
- if (Parent != null && Parent.Implements (iface))
- continue;
- sw.Write (", " + table.GetCSType (iface));
- }
- foreach (string iface in managed_interfaces) {
- if (Parent != null && Parent.Implements (iface))
- continue;
- sw.Write (", " + iface);
- }
- sw.WriteLine (" {");
- sw.WriteLine ();
-
- GenCtors (gen_info);
- GenProperties (gen_info, null);
- GenFields (gen_info);
- GenChildProperties (gen_info);
-
- bool has_sigs = (sigs != null && sigs.Count > 0);
- if (!has_sigs) {
- foreach (string iface in interfaces) {
- InterfaceGen igen = table.GetClassGen (iface) as InterfaceGen;
- if (igen != null && igen.Signals != null) {
- has_sigs = true;
- break;
- }
- }
- }
-
- if (has_sigs && Elem.HasAttribute("parent")) {
- GenSignals (gen_info, null);
- }
-
- GenClassMembers (gen_info, cs_parent);
- GenMethods (gen_info, null, null);
-
- if (interfaces.Count != 0) {
- Hashtable all_methods = new Hashtable ();
- foreach (Method m in Methods.Values)
- all_methods[m.Name] = m;
- Hashtable collisions = new Hashtable ();
- foreach (string iface in interfaces) {
- ClassBase igen = table.GetClassGen (iface);
- foreach (Method m in igen.Methods.Values) {
- if (m.Name.StartsWith ("Get") || m.Name.StartsWith ("Set")) {
- if (GetProperty (m.Name.Substring (3)) != null) {
- collisions[m.Name] = true;
- continue;
- }
- }
- Method collision = all_methods[m.Name] as Method;
- if (collision != null && collision.Signature.Types == m.Signature.Types)
- collisions[m.Name] = true;
- else
- all_methods[m.Name] = m;
- }
- }
-
- foreach (string iface in interfaces) {
- if (Parent != null && Parent.Implements (iface))
- continue;
- InterfaceGen igen = table.GetClassGen (iface) as InterfaceGen;
- igen.GenMethods (gen_info, collisions, this);
- igen.GenProperties (gen_info, this);
- igen.GenSignals (gen_info, this);
- igen.GenVirtualMethods (gen_info, this);
- }
- }
-
- foreach (XmlElement str in strings) {
- sw.Write ("\t\tpublic static string " + str.GetAttribute ("name"));
- sw.WriteLine (" {\n\t\t\t get { return \"" + str.GetAttribute ("value") + "\"; }\n\t\t}");
- }
-
- if (cs_parent != String.Empty && GetExpected (CName) != QualifiedName) {
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic " + Name + " ()");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tGtkSharp." + Studlify (asm_name) + ".ObjectManager.Initialize ();");
- sw.WriteLine ("\t\t}");
- }
-
- sw.WriteLine ("#endregion");
-
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
-
- sw.Close ();
- gen_info.Writer = null;
- Statistics.ObjectCount++;
- }
-
- protected override void GenCtors (GenerationInfo gen_info)
- {
- if (!Elem.HasAttribute("parent"))
- return;
-
- gen_info.Writer.WriteLine("\t\tpublic " + Name + "(IntPtr raw) : base(raw) {}");
- if (ctors.Count == 0 && !DisableVoidCtor) {
- gen_info.Writer.WriteLine();
- gen_info.Writer.WriteLine("\t\tprotected " + Name + "() : base(IntPtr.Zero)");
- gen_info.Writer.WriteLine("\t\t{");
- gen_info.Writer.WriteLine("\t\t\tCreateNativeObject (new string [0], new GLib.Value [0]);");
- gen_info.Writer.WriteLine("\t\t}");
- }
- gen_info.Writer.WriteLine();
-
- base.GenCtors (gen_info);
- }
-
- protected void GenChildProperties (GenerationInfo gen_info)
- {
- if (childprops.Count == 0)
- return;
-
- StreamWriter sw = gen_info.Writer;
-
- ObjectGen child_ancestor = Parent as ObjectGen;
- while (child_ancestor.CName != "GtkContainer" &&
- child_ancestor.childprops.Count == 0)
- child_ancestor = child_ancestor.Parent as ObjectGen;
-
- sw.WriteLine ("\t\tpublic class " + Name + "Child : " + child_ancestor.NS + "." + child_ancestor.Name + "." + child_ancestor.Name + "Child {");
- sw.WriteLine ("\t\t\tprotected internal " + Name + "Child (Gtk.Container parent, Gtk.Widget child) : base (parent, child) {}");
- sw.WriteLine ("");
-
- foreach (ChildProperty prop in childprops.Values)
- prop.Generate (gen_info, "\t\t\t", null);
-
- sw.WriteLine ("\t\t}");
- sw.WriteLine ("");
-
- sw.WriteLine ("\t\tpublic override Gtk.Container.ContainerChild this [Gtk.Widget child] {");
- sw.WriteLine ("\t\t\tget {");
- sw.WriteLine ("\t\t\t\treturn new " + Name + "Child (this, child);");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ("");
-
- }
-
- void GenClassMembers (GenerationInfo gen_info, string cs_parent)
- {
- GenVirtualMethods (gen_info, null);
-
- if (class_struct_name == null || !CanGenerateClassStruct) return;
- StreamWriter sw = gen_info.Writer;
- GenerateClassStruct (gen_info);
- if (cs_parent == "")
- sw.WriteLine ("\t\tstatic uint class_offset = 0;");
- else
- sw.WriteLine ("\t\tstatic uint class_offset = ((GLib.GType) typeof ({0})).GetClassSize ();", cs_parent);
- sw.WriteLine ("\t\tstatic Hashtable class_structs;");
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic {0} GetClassStruct (GLib.GType gtype, bool use_cache)", class_struct_name);
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (class_structs == null)");
- sw.WriteLine ("\t\t\t\tclass_structs = new Hashtable ();");
- sw.WriteLine ();
- sw.WriteLine ("\t\t\tif (use_cache && class_structs.Contains (gtype))");
- sw.WriteLine ("\t\t\t\treturn ({0}) class_structs [gtype];", class_struct_name);
- sw.WriteLine ("\t\t\telse {");
- sw.WriteLine ("\t\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);");
- sw.WriteLine ("\t\t\t\t{0} class_struct = ({0}) Marshal.PtrToStructure (class_ptr, typeof ({0}));", class_struct_name);
- sw.WriteLine ("\t\t\t\tif (use_cache)");
- sw.WriteLine ("\t\t\t\t\tclass_structs.Add (gtype, class_struct);");
- sw.WriteLine ("\t\t\t\treturn class_struct;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic void OverrideClassStruct (GLib.GType gtype, {0} class_struct)", class_struct_name);
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);");
- sw.WriteLine ("\t\t\tMarshal.StructureToPtr (class_struct, class_ptr, false);");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
- /* Keep this in sync with the one in glib/GType.cs */
- private static string GetExpected (string cname)
- {
- for (int i = 1; i < cname.Length; i++) {
- if (Char.IsUpper (cname[i])) {
- if (i == 1 && cname[0] == 'G')
- return "GLib." + cname.Substring (1);
- else
- return cname.Substring (0, i) + "." + cname.Substring (i);
- }
- }
-
- throw new ArgumentException ("cname doesn't follow the NamespaceType capitalization style: " + cname);
- }
-
- private static bool NeedsMap (Hashtable objs, string assembly_name)
- {
- foreach (string key in objs.Keys)
- if (GetExpected (key) != ((string) objs[key]))
- return true;
-
- return false;
- }
-
- private static string Studlify (string name)
- {
- string result = "";
-
- string[] subs = name.Split ('-');
- foreach (string sub in subs)
- result += Char.ToUpper (sub[0]) + sub.Substring (1);
-
- return result;
- }
-
- public static void GenerateMappers ()
- {
- foreach (string dir in dirs.Keys) {
-
- DirectoryInfo di = dirs[dir] as DirectoryInfo;
-
- if (!NeedsMap (di.objects, di.assembly_name))
- continue;
-
- GenerationInfo gen_info = new GenerationInfo (dir, di.assembly_name);
-
- GenerateMapper (di, gen_info);
- }
- }
-
- private static void GenerateMapper (DirectoryInfo dir_info, GenerationInfo gen_info)
- {
- StreamWriter sw = gen_info.OpenStream ("ObjectManager");
-
- sw.WriteLine ("namespace GtkSharp." + Studlify (dir_info.assembly_name) + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tpublic class ObjectManager {");
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic bool initialized = false;");
- sw.WriteLine ("\t\t// Call this method from the appropriate module init function.");
- sw.WriteLine ("\t\tpublic static void Initialize ()");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (initialized)");
- sw.WriteLine ("\t\t\t\treturn;");
- sw.WriteLine ("");
- sw.WriteLine ("\t\t\tinitialized = true;");
-
- foreach (string key in dir_info.objects.Keys) {
- if (GetExpected(key) != ((string) dir_info.objects[key]))
- sw.WriteLine ("\t\t\tGLib.GType.Register ({0}.GType, typeof ({0}));", dir_info.objects [key]);
- }
-
- sw.WriteLine ("\t\t}");
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
- sw.Close ();
- }
- }
-}
-
+// GtkSharp.Generation.ObjectGen.cs - The Object Generatable. +// +// Author: Mike Kestner <mkestner@ximian.com> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.IO; + using System.Text; + using System.Xml; + + public class ObjectGen : ObjectBase { + + private IList<string> custom_attrs = new List<string> (); + private IList<XmlElement> strings = new List<XmlElement> (); + private IDictionary<string, ChildProperty> childprops = new Dictionary<string, ChildProperty> (); + private static IDictionary<string, DirectoryInfo> dirs = new Dictionary<string, DirectoryInfo> (); + + public ObjectGen (XmlElement ns, XmlElement elem) : base (ns, elem, false) + { + foreach (XmlNode node in elem.ChildNodes) { + XmlElement member = node as XmlElement; + if (member == null) { + continue; + } + + if (member.GetAttributeAsBoolean ("hidden")) + continue; + + switch (node.Name) { + case "callback": + Statistics.IgnoreCount++; + break; + + case "custom-attribute": + custom_attrs.Add (member.InnerXml); + break; + + case "static-string": + strings.Add (member); + break; + + case "childprop": + string name = member.GetAttribute ("name"); + while (childprops.ContainsKey (name)) + name += "mangled"; + childprops.Add (name, new ChildProperty (member, this)); + break; + + default: + if (!IsNodeNameHandled (node.Name)) + Console.WriteLine ("Unexpected node " + node.Name + " in " + CName); + break; + } + } + } + + public override string CallByName (string var, bool owned) + { + return String.Format ("{0} == null ? IntPtr.Zero : {0}.{1}", var, owned ? "OwnedHandle" : "Handle"); + } + + public override bool Validate () + { + LogWriter log = new LogWriter (QualifiedName); + + var invalids = new List<string> (); + + foreach (string prop_name in childprops.Keys) { + if (!childprops [prop_name].Validate (log)) + invalids.Add (prop_name); + } + foreach (string prop_name in invalids) + childprops.Remove (prop_name); + + return base.Validate (); + } + + private bool DisableVoidCtor { + get { + return Elem.GetAttributeAsBoolean ("disable_void_ctor"); + } + } + + private class DirectoryInfo { + public string assembly_name; + public IDictionary<string, string> objects; + + public DirectoryInfo (string assembly_name) + { + this.assembly_name = assembly_name; + objects = new Dictionary<string, string> (); + } + } + + private static DirectoryInfo GetDirectoryInfo (string dir, string assembly_name) + { + DirectoryInfo result; + + if (dirs.ContainsKey (dir)) { + result = dirs [dir]; + if (result.assembly_name != assembly_name) { + Console.WriteLine ("Can't put multiple assemblies in one directory."); + return null; + } + + return result; + } + + result = new DirectoryInfo (assembly_name); + dirs.Add (dir, result); + + return result; + } + + public override void Generate (GenerationInfo gen_info) + { + gen_info.CurrentType = QualifiedName; + + string asm_name = gen_info.AssemblyName.Length == 0 ? NS.ToLower () + "-sharp" : gen_info.AssemblyName; + DirectoryInfo di = GetDirectoryInfo (gen_info.Dir, asm_name); + + StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name); + + sw.WriteLine ("namespace " + NS + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + sw.WriteLine ("\tusing System.Collections;"); + sw.WriteLine ("\tusing System.Collections.Generic;"); + sw.WriteLine ("\tusing System.Runtime.InteropServices;"); + sw.WriteLine (); + + SymbolTable table = SymbolTable.Table; + + sw.WriteLine ("#region Autogenerated code"); + if (IsDeprecated) + sw.WriteLine ("\t[Obsolete]"); + foreach (string attr in custom_attrs) + sw.WriteLine ("\t" + attr); + sw.Write ("\t{0} {1}partial class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : ""); + string cs_parent = table.GetCSType(Elem.GetAttribute("parent")); + if (cs_parent != "") { + di.objects.Add (CName, QualifiedName); + sw.Write (" : " + cs_parent); + } + foreach (string iface in interfaces) { + if (Parent != null && Parent.Implements (iface)) + continue; + sw.Write (", " + table.GetCSType (iface)); + } + foreach (string iface in managed_interfaces) { + if (Parent != null && Parent.Implements (iface)) + continue; + sw.Write (", " + iface); + } + sw.WriteLine (" {"); + sw.WriteLine (); + + GenCtors (gen_info); + GenProperties (gen_info, null); + GenFields (gen_info); + GenChildProperties (gen_info); + + bool has_sigs = (sigs != null && sigs.Count > 0); + if (!has_sigs) { + foreach (string iface in interfaces) { + InterfaceGen igen = table.GetClassGen (iface) as InterfaceGen; + if (igen != null && igen.Signals != null) { + has_sigs = true; + break; + } + } + } + + if (has_sigs && Elem.HasAttribute("parent")) { + GenSignals (gen_info, null); + } + + GenClassMembers (gen_info, cs_parent); + GenMethods (gen_info, null, null); + + if (interfaces.Count != 0) { + var all_methods = new Dictionary<string, Method> (); + foreach (Method m in Methods.Values) { + all_methods[m.Name] = m; + } + var collisions = new Dictionary<string, bool> (); + foreach (string iface in interfaces) { + ClassBase igen = table.GetClassGen (iface); + foreach (Method m in igen.Methods.Values) { + if (m.Name.StartsWith ("Get") || m.Name.StartsWith ("Set")) { + if (GetProperty (m.Name.Substring (3)) != null) { + collisions[m.Name] = true; + continue; + } + } + Method collision = null; + all_methods.TryGetValue (m.Name, out collision); + if (collision != null && collision.Signature.Types == m.Signature.Types) + collisions[m.Name] = true; + else + all_methods[m.Name] = m; + } + } + + foreach (string iface in interfaces) { + if (Parent != null && Parent.Implements (iface)) + continue; + InterfaceGen igen = table.GetClassGen (iface) as InterfaceGen; + igen.GenMethods (gen_info, collisions, this); + igen.GenProperties (gen_info, this); + igen.GenSignals (gen_info, this); + igen.GenVirtualMethods (gen_info, this); + } + } + + foreach (XmlElement str in strings) { + sw.Write ("\t\tpublic static string " + str.GetAttribute ("name")); + sw.WriteLine (" {\n\t\t\t get { return \"" + str.GetAttribute ("value") + "\"; }\n\t\t}"); + } + + if (cs_parent != String.Empty && GetExpected (CName) != QualifiedName) { + sw.WriteLine (); + sw.WriteLine ("\t\tstatic " + Name + " ()"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tGtkSharp." + Studlify (asm_name) + ".ObjectManager.Initialize ();"); + sw.WriteLine ("\t\t}"); + } + + sw.WriteLine ("#endregion"); + + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + + sw.Close (); + gen_info.Writer = null; + Statistics.ObjectCount++; + } + + protected override void GenCtors (GenerationInfo gen_info) + { + if (!Elem.HasAttribute("parent")) + return; + + gen_info.Writer.WriteLine("\t\tpublic " + Name + "(IntPtr raw) : base(raw) {}"); + if (ctors.Count == 0 && !DisableVoidCtor) { + gen_info.Writer.WriteLine(); + gen_info.Writer.WriteLine("\t\tprotected " + Name + "() : base(IntPtr.Zero)"); + gen_info.Writer.WriteLine("\t\t{"); + gen_info.Writer.WriteLine("\t\t\tCreateNativeObject (new string [0], new GLib.Value [0]);"); + gen_info.Writer.WriteLine("\t\t}"); + } + gen_info.Writer.WriteLine(); + + base.GenCtors (gen_info); + } + + protected void GenChildProperties (GenerationInfo gen_info) + { + if (childprops.Count == 0) + return; + + StreamWriter sw = gen_info.Writer; + + ObjectGen child_ancestor = Parent as ObjectGen; + while (child_ancestor.CName != "GtkContainer" && + child_ancestor.childprops.Count == 0) + child_ancestor = child_ancestor.Parent as ObjectGen; + + sw.WriteLine ("\t\tpublic class " + Name + "Child : " + child_ancestor.NS + "." + child_ancestor.Name + "." + child_ancestor.Name + "Child {"); + sw.WriteLine ("\t\t\tprotected internal " + Name + "Child (Gtk.Container parent, Gtk.Widget child) : base (parent, child) {}"); + sw.WriteLine (""); + + foreach (ChildProperty prop in childprops.Values) + prop.Generate (gen_info, "\t\t\t", null); + + sw.WriteLine ("\t\t}"); + sw.WriteLine (""); + + sw.WriteLine ("\t\tpublic override Gtk.Container.ContainerChild this [Gtk.Widget child] {"); + sw.WriteLine ("\t\t\tget {"); + sw.WriteLine ("\t\t\t\treturn new " + Name + "Child (this, child);"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (""); + + } + + void GenClassMembers (GenerationInfo gen_info, string cs_parent) + { + GenVirtualMethods (gen_info, null); + + if (class_struct_name == null || !CanGenerateClassStruct) return; + StreamWriter sw = gen_info.Writer; + GenerateClassStruct (gen_info); + if (cs_parent == "") + sw.WriteLine ("\t\tstatic uint class_offset = 0;"); + else + sw.WriteLine ("\t\tstatic uint class_offset = ((GLib.GType) typeof ({0})).GetClassSize ();", cs_parent); + sw.WriteLine ("\t\tstatic Dictionary<GLib.GType, {0}> class_structs;", class_struct_name); + sw.WriteLine (); + sw.WriteLine ("\t\tstatic {0} GetClassStruct (GLib.GType gtype, bool use_cache)", class_struct_name); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (class_structs == null)"); + sw.WriteLine ("\t\t\t\tclass_structs = new Dictionary<GLib.GType, {0}> ();", class_struct_name); + sw.WriteLine (); + sw.WriteLine ("\t\t\tif (use_cache && class_structs.ContainsKey (gtype))"); + sw.WriteLine ("\t\t\t\treturn class_structs [gtype];"); + sw.WriteLine ("\t\t\telse {"); + sw.WriteLine ("\t\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);"); + sw.WriteLine ("\t\t\t\t{0} class_struct = ({0}) Marshal.PtrToStructure (class_ptr, typeof ({0}));", class_struct_name); + sw.WriteLine ("\t\t\t\tif (use_cache)"); + sw.WriteLine ("\t\t\t\t\tclass_structs.Add (gtype, class_struct);"); + sw.WriteLine ("\t\t\t\treturn class_struct;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\tstatic void OverrideClassStruct (GLib.GType gtype, {0} class_struct)", class_struct_name); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);"); + sw.WriteLine ("\t\t\tMarshal.StructureToPtr (class_struct, class_ptr, false);"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + + /* Keep this in sync with the one in glib/GType.cs */ + private static string GetExpected (string cname) + { + for (int i = 1; i < cname.Length; i++) { + if (Char.IsUpper (cname[i])) { + if (i == 1 && cname[0] == 'G') + return "GLib." + cname.Substring (1); + else + return cname.Substring (0, i) + "." + cname.Substring (i); + } + } + + throw new ArgumentException ("cname doesn't follow the NamespaceType capitalization style: " + cname); + } + + private static bool NeedsMap (IDictionary<string, string> objs, string assembly_name) + { + foreach (string key in objs.Keys) { + if (GetExpected (key) != objs[key]) { + return true; + } + } + + return false; + } + + private static string Studlify (string name) + { + string result = ""; + + string[] subs = name.Split ('-'); + foreach (string sub in subs) + result += Char.ToUpper (sub[0]) + sub.Substring (1); + + return result; + } + + public static void GenerateMappers () + { + foreach (string dir in dirs.Keys) { + + DirectoryInfo di = dirs[dir]; + + if (!NeedsMap (di.objects, di.assembly_name)) + continue; + + GenerationInfo gen_info = new GenerationInfo (dir, di.assembly_name); + + GenerateMapper (di, gen_info); + } + } + + private static void GenerateMapper (DirectoryInfo dir_info, GenerationInfo gen_info) + { + StreamWriter sw = gen_info.OpenStream ("ObjectManager"); + + sw.WriteLine ("namespace GtkSharp." + Studlify (dir_info.assembly_name) + " {"); + sw.WriteLine (); + sw.WriteLine ("\tpublic class ObjectManager {"); + sw.WriteLine (); + sw.WriteLine ("\t\tstatic bool initialized = false;"); + sw.WriteLine ("\t\t// Call this method from the appropriate module init function."); + sw.WriteLine ("\t\tpublic static void Initialize ()"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (initialized)"); + sw.WriteLine ("\t\t\t\treturn;"); + sw.WriteLine (""); + sw.WriteLine ("\t\t\tinitialized = true;"); + + foreach (string key in dir_info.objects.Keys) { + if (GetExpected(key) != dir_info.objects[key]) { + sw.WriteLine ("\t\t\tGLib.GType.Register ({0}.GType, typeof ({0}));", dir_info.objects [key]); + } + } + + sw.WriteLine ("\t\t}"); + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + sw.Close (); + } + } +} + diff --git a/generator/OpaqueGen.cs b/generator/OpaqueGen.cs index 89b175c..5b71ea7 100644 --- a/generator/OpaqueGen.cs +++ b/generator/OpaqueGen.cs @@ -1,235 +1,236 @@ -// GtkSharp.Generation.OpaqueGen.cs - The Opaque Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class OpaqueGen : HandleBase {
-
- public OpaqueGen (XmlElement ns, XmlElement elem) : base (ns, elem) {}
-
- public override string FromNative(string var, bool owned)
- {
- return var + " == IntPtr.Zero ? null : (" + QualifiedName + ") GLib.Opaque.GetOpaque (" + var + ", typeof (" + QualifiedName + "), " + (owned ? "true" : "false") + ")";
- }
-
- private bool DisableRawCtor {
- get {
- return Elem.HasAttribute ("disable_raw_ctor");
- }
- }
-
- public override void Generate (GenerationInfo gen_info)
- {
- gen_info.CurrentType = QualifiedName;
-
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
-
- sw.WriteLine ("namespace " + NS + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
- sw.WriteLine ("\tusing System.Collections;");
- sw.WriteLine ("\tusing System.Runtime.InteropServices;");
- sw.WriteLine ();
-
- sw.WriteLine ("#region Autogenerated code");
-
- SymbolTable table = SymbolTable.Table;
-
- Method ref_, unref, dispose;
- GetSpecialMethods (out ref_, out unref, out dispose);
-
- if (IsDeprecated)
- sw.WriteLine ("\t[Obsolete]");
- sw.Write ("\t{0} partial {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : String.Empty);
- string cs_parent = table.GetCSType(Elem.GetAttribute("parent"));
- if (cs_parent != "")
- sw.Write (" : " + cs_parent);
- else
- sw.Write (" : GLib.Opaque");
-
- foreach (string iface in managed_interfaces) {
- if (Parent != null && Parent.Implements (iface))
- continue;
- sw.Write (", " + iface);
- }
-
- sw.WriteLine (" {");
- sw.WriteLine ();
-
- GenFields (gen_info);
- GenMethods (gen_info, null, null);
- GenCtors (gen_info);
-
- if (ref_ != null) {
- ref_.GenerateImport (sw);
- sw.WriteLine ("\t\tprotected override void Ref (IntPtr raw)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (!Owned) {");
- sw.WriteLine ("\t\t\t\t" + ref_.CName + " (raw);");
- sw.WriteLine ("\t\t\t\tOwned = true;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
-
- if (ref_.IsDeprecated) {
- sw.WriteLine ("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]");
- if (ref_.ReturnType == "void")
- sw.WriteLine ("\t\tpublic void Ref () {}");
- else
- sw.WriteLine ("\t\tpublic " + Name + " Ref () { return this; }");
- sw.WriteLine ();
- }
- }
-
- bool finalizer_needed = false;
-
- if (unref != null) {
- unref.GenerateImport (sw);
- sw.WriteLine ("\t\tprotected override void Unref (IntPtr raw)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (Owned) {");
- sw.WriteLine ("\t\t\t\t" + unref.CName + " (raw);");
- sw.WriteLine ("\t\t\t\tOwned = false;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
-
- if (unref.IsDeprecated) {
- sw.WriteLine ("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]");
- sw.WriteLine ("\t\tpublic void Unref () {}");
- sw.WriteLine ();
- }
- finalizer_needed = true;
- }
-
- if (dispose != null) {
- dispose.GenerateImport (sw);
- sw.WriteLine ("\t\tprotected override void Free (IntPtr raw)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\t" + dispose.CName + " (raw);");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
-
- if (dispose.IsDeprecated) {
- sw.WriteLine ("\t\t[Obsolete(\"" + QualifiedName + " is now freed automatically\")]");
- sw.WriteLine ("\t\tpublic void " + dispose.Name + " () {}");
- sw.WriteLine ();
- }
- finalizer_needed = true;
- }
-
- if (finalizer_needed) {
- sw.WriteLine ("\t\tclass FinalizerInfo {");
- sw.WriteLine ("\t\t\tIntPtr handle;");
- sw.WriteLine ();
- sw.WriteLine ("\t\t\tpublic FinalizerInfo (IntPtr handle)");
- sw.WriteLine ("\t\t\t{");
- sw.WriteLine ("\t\t\t\tthis.handle = handle;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\t\tpublic bool Handler ()");
- sw.WriteLine ("\t\t\t{");
- if (dispose != null)
- sw.WriteLine ("\t\t\t\t{0} (handle);", dispose.CName);
- else if (unref != null)
- sw.WriteLine ("\t\t\t\t{0} (handle);", unref.CName);
- sw.WriteLine ("\t\t\t\treturn false;");
- sw.WriteLine ("\t\t\t}");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- sw.WriteLine ("\t\t~{0} ()", Name);
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tif (!Owned)");
- sw.WriteLine ("\t\t\t\treturn;");
- sw.WriteLine ("\t\t\tFinalizerInfo info = new FinalizerInfo (Handle);");
- sw.WriteLine ("\t\t\tGLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-
-#if false
- Method copy = Methods ["Copy"] as Method;
- if (copy != null && copy.Parameters.Count == 0) {
- sw.WriteLine ("\t\tprotected override GLib.Opaque Copy (IntPtr raw)");
- sw.WriteLine ("\t\t{");
- sw.WriteLine ("\t\t\tGLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));");
- sw.WriteLine ("\t\t\tresult.Owned = true;");
- sw.WriteLine ("\t\t\treturn result;");
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
-#endif
- sw.WriteLine ("#endregion");
-
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
-
- sw.Close ();
- gen_info.Writer = null;
- Statistics.OpaqueCount++;
- }
-
- void GetSpecialMethods (out Method ref_, out Method unref, out Method dispose)
- {
- ref_ = CheckSpecialMethod (GetMethod ("Ref"));
- unref = CheckSpecialMethod (GetMethod ("Unref"));
-
- dispose = GetMethod ("Free");
- if (dispose == null) {
- dispose = GetMethod ("Destroy");
- if (dispose == null)
- dispose = GetMethod ("Dispose");
- }
- dispose = CheckSpecialMethod (dispose);
- }
-
- Method CheckSpecialMethod (Method method)
- {
- if (method == null)
- return null;
- if (method.ReturnType != "void" &&
- method.ReturnType != QualifiedName)
- return null;
- if (method.Signature.ToString () != "")
- return null;
-
- methods.Remove (method.Name);
- return method;
- }
-
- protected override void GenCtors (GenerationInfo gen_info)
- {
- if (!DisableRawCtor) {
- gen_info.Writer.WriteLine("\t\tpublic " + Name + "(IntPtr raw) : base(raw) {}");
- gen_info.Writer.WriteLine();
- }
-
- base.GenCtors (gen_info);
- }
-
- }
-}
-
+// GtkSharp.Generation.OpaqueGen.cs - The Opaque Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Xml; + + public class OpaqueGen : HandleBase { + + public OpaqueGen (XmlElement ns, XmlElement elem) : base (ns, elem) {} + + public override string FromNative(string var, bool owned) + { + return var + " == IntPtr.Zero ? null : (" + QualifiedName + ") GLib.Opaque.GetOpaque (" + var + ", typeof (" + QualifiedName + "), " + (owned ? "true" : "false") + ")"; + } + + private bool DisableRawCtor { + get { + return Elem.GetAttributeAsBoolean ("disable_raw_ctor"); + } + } + + public override void Generate (GenerationInfo gen_info) + { + gen_info.CurrentType = QualifiedName; + + StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name); + + sw.WriteLine ("namespace " + NS + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + sw.WriteLine ("\tusing System.Collections;"); + sw.WriteLine ("\tusing System.Collections.Generic;"); + sw.WriteLine ("\tusing System.Runtime.InteropServices;"); + sw.WriteLine (); + + sw.WriteLine ("#region Autogenerated code"); + + SymbolTable table = SymbolTable.Table; + + Method ref_, unref, dispose; + GetSpecialMethods (out ref_, out unref, out dispose); + + if (IsDeprecated) + sw.WriteLine ("\t[Obsolete]"); + sw.Write ("\t{0} partial {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : String.Empty); + string cs_parent = table.GetCSType(Elem.GetAttribute("parent")); + if (cs_parent != "") + sw.Write (" : " + cs_parent); + else + sw.Write (" : GLib.Opaque"); + + foreach (string iface in managed_interfaces) { + if (Parent != null && Parent.Implements (iface)) + continue; + sw.Write (", " + iface); + } + + sw.WriteLine (" {"); + sw.WriteLine (); + + GenFields (gen_info); + GenMethods (gen_info, null, null); + GenCtors (gen_info); + + if (ref_ != null) { + ref_.GenerateImport (sw); + sw.WriteLine ("\t\tprotected override void Ref (IntPtr raw)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (!Owned) {"); + sw.WriteLine ("\t\t\t\t" + ref_.CName + " (raw);"); + sw.WriteLine ("\t\t\t\tOwned = true;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + + if (ref_.IsDeprecated) { + sw.WriteLine ("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); + if (ref_.ReturnType == "void") + sw.WriteLine ("\t\tpublic void Ref () {}"); + else + sw.WriteLine ("\t\tpublic " + Name + " Ref () { return this; }"); + sw.WriteLine (); + } + } + + bool finalizer_needed = false; + + if (unref != null) { + unref.GenerateImport (sw); + sw.WriteLine ("\t\tprotected override void Unref (IntPtr raw)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (Owned) {"); + sw.WriteLine ("\t\t\t\t" + unref.CName + " (raw);"); + sw.WriteLine ("\t\t\t\tOwned = false;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + + if (unref.IsDeprecated) { + sw.WriteLine ("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); + sw.WriteLine ("\t\tpublic void Unref () {}"); + sw.WriteLine (); + } + finalizer_needed = true; + } + + if (dispose != null) { + dispose.GenerateImport (sw); + sw.WriteLine ("\t\tprotected override void Free (IntPtr raw)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\t" + dispose.CName + " (raw);"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + + if (dispose.IsDeprecated) { + sw.WriteLine ("\t\t[Obsolete(\"" + QualifiedName + " is now freed automatically\")]"); + sw.WriteLine ("\t\tpublic void " + dispose.Name + " () {}"); + sw.WriteLine (); + } + finalizer_needed = true; + } + + if (finalizer_needed) { + sw.WriteLine ("\t\tclass FinalizerInfo {"); + sw.WriteLine ("\t\t\tIntPtr handle;"); + sw.WriteLine (); + sw.WriteLine ("\t\t\tpublic FinalizerInfo (IntPtr handle)"); + sw.WriteLine ("\t\t\t{"); + sw.WriteLine ("\t\t\t\tthis.handle = handle;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\t\tpublic bool Handler ()"); + sw.WriteLine ("\t\t\t{"); + if (dispose != null) + sw.WriteLine ("\t\t\t\t{0} (handle);", dispose.CName); + else if (unref != null) + sw.WriteLine ("\t\t\t\t{0} (handle);", unref.CName); + sw.WriteLine ("\t\t\t\treturn false;"); + sw.WriteLine ("\t\t\t}"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + sw.WriteLine ("\t\t~{0} ()", Name); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tif (!Owned)"); + sw.WriteLine ("\t\t\t\treturn;"); + sw.WriteLine ("\t\t\tFinalizerInfo info = new FinalizerInfo (Handle);"); + sw.WriteLine ("\t\t\tGLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + +#if false + Method copy = Methods ["Copy"] as Method; + if (copy != null && copy.Parameters.Count == 0) { + sw.WriteLine ("\t\tprotected override GLib.Opaque Copy (IntPtr raw)"); + sw.WriteLine ("\t\t{"); + sw.WriteLine ("\t\t\tGLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));"); + sw.WriteLine ("\t\t\tresult.Owned = true;"); + sw.WriteLine ("\t\t\treturn result;"); + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } +#endif + sw.WriteLine ("#endregion"); + + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + + sw.Close (); + gen_info.Writer = null; + Statistics.OpaqueCount++; + } + + void GetSpecialMethods (out Method ref_, out Method unref, out Method dispose) + { + ref_ = CheckSpecialMethod (GetMethod ("Ref")); + unref = CheckSpecialMethod (GetMethod ("Unref")); + + dispose = GetMethod ("Free"); + if (dispose == null) { + dispose = GetMethod ("Destroy"); + if (dispose == null) + dispose = GetMethod ("Dispose"); + } + dispose = CheckSpecialMethod (dispose); + } + + Method CheckSpecialMethod (Method method) + { + if (method == null) + return null; + if (method.ReturnType != "void" && + method.ReturnType != QualifiedName) + return null; + if (method.Signature.ToString () != "") + return null; + + Methods.Remove (method.Name); + return method; + } + + protected override void GenCtors (GenerationInfo gen_info) + { + if (!DisableRawCtor) { + gen_info.Writer.WriteLine("\t\tpublic " + Name + "(IntPtr raw) : base(raw) {}"); + gen_info.Writer.WriteLine(); + } + + base.GenCtors (gen_info); + } + + } +} + diff --git a/generator/OwnableGen.cs b/generator/OwnableGen.cs index 96a2a82..03d4b9b 100644 --- a/generator/OwnableGen.cs +++ b/generator/OwnableGen.cs @@ -1,51 +1,51 @@ -// GtkSharp.Generation.ManualGen.cs - Ungenerated handle type Generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2003 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class OwnableGen : SimpleBase, IOwnable {
-
- public OwnableGen (string ctype, string type) : base (ctype, type, "null") {}
-
- public override string MarshalType {
- get { return "IntPtr"; }
- }
-
- public override string CallByName (string var_name)
- {
- return var_name + " == null ? IntPtr.Zero : " + var_name + ".Handle";
- }
-
- public override string FromNative (string var)
- {
- return String.Format ("new {0} ({1})", QualifiedName, var);
- }
-
- public string FromNative (string var, bool owned)
- {
- return String.Format ("new {0} ({1}, {2})", QualifiedName, var, owned ? "true" : "false");
- }
- }
-}
-
+// GtkSharp.Generation.ManualGen.cs - Ungenerated handle type Generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public class OwnableGen : SimpleBase, IOwnable { + + public OwnableGen (string ctype, string type) : base (ctype, type, "null") {} + + public override string MarshalType { + get { return "IntPtr"; } + } + + public override string CallByName (string var_name) + { + return var_name + " == null ? IntPtr.Zero : " + var_name + ".Handle"; + } + + public override string FromNative (string var) + { + return String.Format ("new {0} ({1})", QualifiedName, var); + } + + public string FromNative (string var, bool owned) + { + return String.Format ("new {0} ({1}, {2})", QualifiedName, var, owned ? "true" : "false"); + } + } +} + diff --git a/generator/Parameter.cs b/generator/Parameter.cs new file mode 100644 index 0000000..2196f4b --- /dev/null +++ b/generator/Parameter.cs @@ -0,0 +1,380 @@ +// GtkSharp.Generation.Parameters.cs - The Parameters Generation Class. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.Xml; + + public class Parameter { + + private XmlElement elem; + + public Parameter (XmlElement e) + { + elem = e; + } + + string call_name; + public string CallName { + get { + if (call_name == null) + return Name; + else + return call_name; + } + set { + call_name = value; + } + } + + public string CType { + get { + string type = elem.GetAttribute("type"); + if (type == "void*") + type = "gpointer"; + return type; + } + } + + public string CSType { + get { + string cstype = SymbolTable.Table.GetCSType( elem.GetAttribute("type")); + if (cstype == "void") + cstype = "System.IntPtr"; + if (IsArray) { + if (IsParams) + cstype = "params " + cstype; + cstype += "[]"; + cstype = cstype.Replace ("ref ", ""); + } + return cstype; + } + } + + public IGeneratable Generatable { + get { + return SymbolTable.Table[CType]; + } + } + + public bool IsArray { + get { + return elem.GetAttributeAsBoolean ("array") || elem.GetAttributeAsBoolean ("null_term_array"); + } + } + + public bool IsEllipsis { + get { + return elem.GetAttributeAsBoolean ("ellipsis"); + } + } + + bool is_count; + bool is_count_set; + public bool IsCount { + get { + if (is_count_set) + return is_count; + + if (Name.StartsWith("n_")) + switch (CSType) { + case "int": + case "uint": + case "long": + case "ulong": + case "short": + case "ushort": + return true; + default: + return false; + } + else + return false; + } + set { + is_count_set = true; + is_count = value; + } + } + + public bool IsDestroyNotify { + get { + return CType == "GDestroyNotify"; + } + } + + public bool IsLength { + get { + if (Name.EndsWith("len") || Name.EndsWith("length")) + switch (CSType) { + case "int": + case "uint": + case "long": + case "ulong": + case "short": + case "ushort": + return true; + default: + return false; + } + else + return false; + } + } + + public bool IsParams { + get { + return elem.HasAttribute("params"); + } + } + + public bool IsString { + get { + return (CSType == "string"); + } + } + + public bool IsUserData { + get { + return CSType == "IntPtr" && (Name.EndsWith ("data") || Name.EndsWith ("data_or_owner")); + } + } + + public virtual string MarshalType { + get { + string type = SymbolTable.Table.GetMarshalType( elem.GetAttribute("type")); + if (type == "void" || Generatable is IManualMarshaler) + type = "IntPtr"; + if (IsArray) { + type += "[]"; + type = type.Replace ("ref ", ""); + } + return type; + } + } + + public string Name { + get { + return SymbolTable.Table.MangleName (elem.GetAttribute("name")); + } + } + + public bool Owned { + get { + return elem.GetAttribute ("owned") == "true"; + } + } + + public virtual string NativeSignature { + get { + string sig = MarshalType + " " + Name; + if (PassAs != String.Empty) + sig = PassAs + " " + sig; + return sig; + } + } + + public string PropertyName { + get { + return elem.GetAttribute("property_name"); + } + } + + string pass_as; + + public string PassAs { + get { + if (pass_as != null) + return pass_as; + + if (elem.HasAttribute ("pass_as")) + return elem.GetAttribute ("pass_as"); + + if (IsArray || CSType.EndsWith ("IntPtr")) + return ""; + + if (CType.EndsWith ("*") && (Generatable is SimpleGen || Generatable is EnumGen)) + return "out"; + + return ""; + } + set { + pass_as = value; + } + } + + string scope; + public string Scope { + get { + if (scope == null) + scope = elem.GetAttribute ("scope"); + return scope; + } + set { + scope = value; + } + } + + public virtual string[] Prepare { + get { + IGeneratable gen = Generatable; + if (gen is IManualMarshaler) { + string result = "IntPtr native_" + CallName; + if (PassAs != "out") + result += " = " + (gen as IManualMarshaler).AllocNative (CallName); + return new string [] { result + ";" }; + } else if (PassAs == "out" && CSType != MarshalType) { + return new string [] { gen.MarshalType + " native_" + CallName + ";" }; + } else if (PassAs == "ref" && CSType != MarshalType) { + return new string [] { gen.MarshalType + " native_" + CallName + " = (" + gen.MarshalType + ") " + CallName + ";" }; + } + + return new string [0]; + } + } + + public virtual string CallString { + get { + string call_parm; + + IGeneratable gen = Generatable; + if (gen is CallbackGen) + return SymbolTable.Table.CallByName (CType, CallName + "_wrapper"); + else if (PassAs != String.Empty) { + call_parm = PassAs + " "; + if (CSType != MarshalType) + call_parm += "native_"; + call_parm += CallName; + } else if (gen is IManualMarshaler) + call_parm = "native_" + CallName; + else if (gen is ObjectBase) + call_parm = (gen as ObjectBase).CallByName (CallName, Owned); + else + call_parm = gen.CallByName (CallName); + + return call_parm; + } + } + + public virtual string[] Finish { + get { + IGeneratable gen = Generatable; + if (gen is IManualMarshaler) { + string[] result = new string [PassAs == "ref" ? 2 : 1]; + int i = 0; + if (PassAs != String.Empty) + result [i++] = CallName + " = " + Generatable.FromNative ("native_" + CallName) + ";"; + if (PassAs != "out") + result [i] = (gen as IManualMarshaler).ReleaseNative ("native_" + CallName) + ";"; + return result; + } else if (PassAs != String.Empty && MarshalType != CSType) + if (gen is IOwnable) + return new string [] { CallName + " = " + (gen as IOwnable).FromNative ("native_" + CallName, Owned) + ";" }; + else + return new string [] { CallName + " = " + gen.FromNative ("native_" + CallName) + ";" }; + return new string [0]; + } + } + + public string FromNative (string var) + { + if (Generatable == null) + return String.Empty; + else if (Generatable is IOwnable) + return ((IOwnable)Generatable).FromNative (var, Owned); + else + return Generatable.FromNative (var); + } + + public string StudlyName { + get { + string name = elem.GetAttribute("name"); + string[] segs = name.Split('_'); + string studly = ""; + foreach (string s in segs) { + if (s.Trim () == "") + continue; + studly += (s.Substring(0,1).ToUpper() + s.Substring(1)); + } + return studly; + + } + } + } + + public class ErrorParameter : Parameter { + + public ErrorParameter (XmlElement elem) : base (elem) + { + PassAs = "out"; + } + + public override string CallString { + get { + return "out error"; + } + } + } + + public class StructParameter : Parameter { + + public StructParameter (XmlElement elem) : base (elem) {} + + public override string MarshalType { + get { + return "IntPtr"; + } + } + + public override string[] Prepare { + get { + if (PassAs == "out") + return new string [] { "IntPtr native_" + CallName + " = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (" + Generatable.QualifiedName + ")));"}; + else + return new string [] { "IntPtr native_" + CallName + " = " + (Generatable as IManualMarshaler).AllocNative (CallName) + ";"}; + } + } + + public override string CallString { + get { + return "native_" + CallName; + } + } + + public override string[] Finish { + get { + string[] result = new string [2]; + result [0] = CallName + " = " + FromNative ("native_" + CallName) + ";"; + result [1] = (Generatable as IManualMarshaler).ReleaseNative ("native_" + CallName) + ";"; + return result; + } + } + + public override string NativeSignature { + get { + return "IntPtr " + CallName; + } + } + } +} diff --git a/generator/Parameters.cs b/generator/Parameters.cs index f599d52..ad31a1b 100644 --- a/generator/Parameters.cs +++ b/generator/Parameters.cs @@ -1,759 +1,273 @@ -// GtkSharp.Generation.Parameters.cs - The Parameters Generation Class.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class Parameter {
-
- private XmlElement elem;
-
- public Parameter (XmlElement e)
- {
- elem = e;
- }
-
- string call_name;
- public string CallName {
- get {
- if (call_name == null)
- return Name;
- else
- return call_name;
- }
- set {
- call_name = value;
- }
- }
-
- public string CType {
- get {
- string type = elem.GetAttribute("type");
- if (type == "void*")
- type = "gpointer";
- return type;
- }
- }
-
- public string CSType {
- get {
- string cstype = SymbolTable.Table.GetCSType( elem.GetAttribute("type"));
- if (cstype == "void")
- cstype = "System.IntPtr";
- if (IsArray) {
- if (IsParams)
- cstype = "params " + cstype;
- cstype += "[]";
- cstype = cstype.Replace ("ref ", "");
- }
- return cstype;
- }
- }
-
- public IGeneratable Generatable {
- get {
- return SymbolTable.Table[CType];
- }
- }
-
- public bool IsArray {
- get {
- return elem.HasAttribute("array") || elem.HasAttribute("null_term_array");
- }
- }
-
- public bool IsEllipsis {
- get {
- return elem.HasAttribute("ellipsis");
- }
- }
-
- bool is_count;
- bool is_count_set;
- public bool IsCount {
- get {
- if (is_count_set)
- return is_count;
-
- if (Name.StartsWith("n_"))
- switch (CSType) {
- case "int":
- case "uint":
- case "long":
- case "ulong":
- case "short":
- case "ushort":
- return true;
- default:
- return false;
- }
- else
- return false;
- }
- set {
- is_count_set = true;
- is_count = value;
- }
- }
-
- public bool IsDestroyNotify {
- get {
- return CType == "GDestroyNotify";
- }
- }
-
- public bool IsLength {
- get {
- if (Name.EndsWith("len") || Name.EndsWith("length"))
- switch (CSType) {
- case "int":
- case "uint":
- case "long":
- case "ulong":
- case "short":
- case "ushort":
- return true;
- default:
- return false;
- }
- else
- return false;
- }
- }
-
- public bool IsParams {
- get {
- return elem.HasAttribute("params");
- }
- }
-
- public bool IsString {
- get {
- return (CSType == "string");
- }
- }
-
- public bool IsUserData {
- get {
- return CSType == "IntPtr" && (Name.EndsWith ("data") || Name.EndsWith ("data_or_owner"));
- }
- }
-
- public virtual string MarshalType {
- get {
- string type = SymbolTable.Table.GetMarshalType( elem.GetAttribute("type"));
- if (type == "void" || Generatable is IManualMarshaler)
- type = "IntPtr";
- if (IsArray) {
- type += "[]";
- type = type.Replace ("ref ", "");
- }
- return type;
- }
- }
-
- public string Name {
- get {
- return SymbolTable.Table.MangleName (elem.GetAttribute("name"));
- }
- }
-
- public bool Owned {
- get {
- return elem.GetAttribute ("owned") == "true";
- }
- }
-
- public virtual string NativeSignature {
- get {
- string sig = MarshalType + " " + Name;
- if (PassAs != String.Empty)
- sig = PassAs + " " + sig;
- return sig;
- }
- }
-
- public string PropertyName {
- get {
- return elem.GetAttribute("property_name");
- }
- }
-
- string pass_as;
-
- public string PassAs {
- get {
- if (pass_as != null)
- return pass_as;
-
- if (elem.HasAttribute ("pass_as"))
- return elem.GetAttribute ("pass_as");
-
- if (IsArray || CSType.EndsWith ("IntPtr"))
- return "";
-
- if (CType.EndsWith ("*") && (Generatable is SimpleGen || Generatable is EnumGen))
- return "out";
-
- return "";
- }
- set {
- pass_as = value;
- }
- }
-
- string scope;
- public string Scope {
- get {
- if (scope == null)
- scope = elem.GetAttribute ("scope");
- return scope;
- }
- set {
- scope = value;
- }
- }
-
- public virtual string[] Prepare {
- get {
- IGeneratable gen = Generatable;
- if (gen is IManualMarshaler) {
- string result = "IntPtr native_" + CallName;
- if (PassAs != "out")
- result += " = " + (gen as IManualMarshaler).AllocNative (CallName);
- return new string [] { result + ";" };
- } else if (PassAs == "out" && CSType != MarshalType) {
- return new string [] { gen.MarshalType + " native_" + CallName + ";" };
- } else if (PassAs == "ref" && CSType != MarshalType) {
- return new string [] { gen.MarshalType + " native_" + CallName + " = (" + gen.MarshalType + ") " + CallName + ";" };
- }
-
- return new string [0];
- }
- }
-
- public virtual string CallString {
- get {
- string call_parm;
-
- IGeneratable gen = Generatable;
- if (gen is CallbackGen)
- return SymbolTable.Table.CallByName (CType, CallName + "_wrapper");
- else if (PassAs != String.Empty) {
- call_parm = PassAs + " ";
- if (CSType != MarshalType)
- call_parm += "native_";
- call_parm += CallName;
- } else if (gen is IManualMarshaler)
- call_parm = "native_" + CallName;
- else if (gen is ObjectBase)
- call_parm = (gen as ObjectBase).CallByName (CallName, Owned);
- else
- call_parm = gen.CallByName (CallName);
-
- return call_parm;
- }
- }
-
- public virtual string[] Finish {
- get {
- IGeneratable gen = Generatable;
- if (gen is IManualMarshaler) {
- string[] result = new string [PassAs == "ref" ? 2 : 1];
- int i = 0;
- if (PassAs != String.Empty)
- result [i++] = CallName + " = " + Generatable.FromNative ("native_" + CallName) + ";";
- if (PassAs != "out")
- result [i] = (gen as IManualMarshaler).ReleaseNative ("native_" + CallName) + ";";
- return result;
- } else if (PassAs != String.Empty && MarshalType != CSType)
- if (gen is IOwnable)
- return new string [] { CallName + " = " + (gen as IOwnable).FromNative ("native_" + CallName, Owned) + ";" };
- else
- return new string [] { CallName + " = " + gen.FromNative ("native_" + CallName) + ";" };
- return new string [0];
- }
- }
-
- public string FromNative (string var)
- {
- if (Generatable == null)
- return String.Empty;
- else if (Generatable is IOwnable)
- return ((IOwnable)Generatable).FromNative (var, Owned);
- else
- return Generatable.FromNative (var);
- }
-
- public string StudlyName {
- get {
- string name = elem.GetAttribute("name");
- string[] segs = name.Split('_');
- string studly = "";
- foreach (string s in segs) {
- if (s.Trim () == "")
- continue;
- studly += (s.Substring(0,1).ToUpper() + s.Substring(1));
- }
- return studly;
-
- }
- }
- }
-
- public class ArrayParameter : Parameter {
-
- bool null_terminated;
-
- public ArrayParameter (XmlElement elem) : base (elem)
- {
- null_terminated = elem.HasAttribute ("null_term_array");
- }
-
- public override string MarshalType {
- get {
- if (Generatable is StructBase)
- return CSType;
- else
- return base.MarshalType;
- }
- }
-
- bool NullTerminated {
- get {
- return null_terminated;
- }
- }
-
- public override string[] Prepare {
- get {
- if (CSType == MarshalType)
- return new string [0];
-
- ArrayList result = new ArrayList ();
- result.Add (String.Format ("int cnt_{0} = {0} == null ? 0 : {0}.Length;", CallName));
- result.Add (String.Format ("{0}[] native_{1} = new {0} [cnt_{1}" + (NullTerminated ? " + 1" : "") + "];", MarshalType.TrimEnd('[', ']'), CallName));
- result.Add (String.Format ("for (int i = 0; i < cnt_{0}; i++)", CallName));
- IGeneratable gen = Generatable;
- if (gen is IManualMarshaler)
- result.Add (String.Format ("\tnative_{0} [i] = {1};", CallName, (gen as IManualMarshaler).AllocNative (CallName + "[i]")));
- else
- result.Add (String.Format ("\tnative_{0} [i] = {1};", CallName, gen.CallByName (CallName + "[i]")));
-
- if (NullTerminated)
- result.Add (String.Format ("native_{0} [cnt_{0}] = IntPtr.Zero;", CallName));
- return (string[]) result.ToArray (typeof (string));
- }
- }
-
- public override string CallString {
- get {
- if (CSType != MarshalType)
- return "native_" + CallName;
- else
- return CallName;
- }
- }
-
- public override string[] Finish {
- get {
- if (CSType == MarshalType)
- return new string [0];
-
- IGeneratable gen = Generatable;
- if (gen is IManualMarshaler) {
- string [] result = new string [4];
- result [0] = "for (int i = 0; i < native_" + CallName + ".Length" + (NullTerminated ? " - 1" : "") + "; i++) {";
- result [1] = "\t" + CallName + " [i] = " + Generatable.FromNative ("native_" + CallName + "[i]") + ";";
- result [2] = "\t" + (gen as IManualMarshaler).ReleaseNative ("native_" + CallName + "[i]") + ";";
- result [3] = "}";
- return result;
- }
-
- return new string [0];
- }
- }
- }
-
- public class ArrayCountPair : ArrayParameter {
-
- XmlElement count_elem;
- bool invert;
-
- public ArrayCountPair (XmlElement array_elem, XmlElement count_elem, bool invert) : base (array_elem)
- {
- this.count_elem = count_elem;
- this.invert = invert;
- }
-
- string CountNativeType {
- get {
- return SymbolTable.Table.GetMarshalType(count_elem.GetAttribute("type"));
- }
- }
-
- string CountType {
- get {
- return SymbolTable.Table.GetCSType(count_elem.GetAttribute("type"));
- }
- }
-
- string CountCast {
- get {
- if (CountType == "int")
- return String.Empty;
- else
- return "(" + CountType + ") ";
- }
- }
-
- string CountName {
- get {
- return SymbolTable.Table.MangleName (count_elem.GetAttribute("name"));
- }
- }
-
- string CallCount (string name)
- {
- string result = CountCast + "(" + name + " == null ? 0 : " + name + ".Length)";
- IGeneratable gen = SymbolTable.Table[count_elem.GetAttribute("type")];
- return gen.CallByName (result);
- }
-
- public override string CallString {
- get {
- if (invert)
- return CallCount (CallName) + ", " + base.CallString;
- else
- return base.CallString + ", " + CallCount (CallName);
- }
- }
-
- public override string NativeSignature {
- get {
- if (invert)
- return CountNativeType + " " + CountName + ", " + MarshalType + " " + Name;
- else
- return MarshalType + " " + Name + ", " + CountNativeType + " " + CountName;
- }
- }
- }
-
- public class ErrorParameter : Parameter {
-
- public ErrorParameter (XmlElement elem) : base (elem)
- {
- PassAs = "out";
- }
-
- public override string CallString {
- get {
- return "out error";
- }
- }
- }
-
- public class StructParameter : Parameter {
-
- public StructParameter (XmlElement elem) : base (elem) {}
-
- public override string MarshalType {
- get {
- return "IntPtr";
- }
- }
-
- public override string[] Prepare {
- get {
- if (PassAs == "out")
- return new string [] { "IntPtr native_" + CallName + " = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (" + Generatable.QualifiedName + ")));"};
- else
- return new string [] { "IntPtr native_" + CallName + " = " + (Generatable as IManualMarshaler).AllocNative (CallName) + ";"};
- }
- }
-
- public override string CallString {
- get {
- return "native_" + CallName;
- }
- }
-
- public override string[] Finish {
- get {
- string[] result = new string [2];
- result [0] = CallName + " = " + FromNative ("native_" + CallName) + ";";
- result [1] = (Generatable as IManualMarshaler).ReleaseNative ("native_" + CallName) + ";";
- return result;
- }
- }
-
- public override string NativeSignature {
- get {
- return "IntPtr " + CallName;
- }
- }
- }
-
- public class Parameters : IEnumerable {
-
- ArrayList param_list = new ArrayList ();
- XmlElement elem;
- bool first_is_instance;
-
- public Parameters (XmlElement elem) : this (elem, false) { }
-
- public Parameters (XmlElement elem, bool first_is_instance)
- {
- if (elem == null)
- valid = true;
- this.elem = elem;
- this.first_is_instance = first_is_instance;
- if (first_is_instance)
- is_static = false;
- }
-
- public int Count {
- get { return param_list.Count; }
- }
-
- public int VisibleCount {
- get {
- int visible = 0;
- foreach (Parameter p in this) {
- if (!IsHidden (p))
- visible++;
- }
- return visible;
- }
- }
-
- public Parameter this [int idx] {
- get {
- return param_list [idx] as Parameter;
- }
- }
-
- public bool IsHidden (Parameter p)
- {
- int idx = param_list.IndexOf (p);
-
- if (idx > 0 && p.IsLength && p.PassAs == String.Empty && this [idx - 1].IsString)
- return true;
-
- if (p.IsCount)
- return true;
-
- if (p.CType == "GError**")
- return true;
-
- if (HasCB || HideData) {
- if (p.IsUserData && (idx == Count - 1))
- return true;
- if (p.IsUserData && (idx == Count - 2) && this [Count - 1] is ErrorParameter)
- return true;
- if (p.IsUserData && idx > 0 &&
- this [idx - 1].Generatable is CallbackGen)
- return true;
- if (p.IsDestroyNotify && (idx == Count - 1) &&
- this [idx - 1].IsUserData)
- return true;
- }
-
- return false;
- }
-
- bool has_cb;
- public bool HasCB {
- get { return has_cb; }
- set { has_cb = value; }
- }
-
- public bool HasOutParam {
- get {
- foreach (Parameter p in this)
- if (p.PassAs == "out")
- return true;
- return false;
- }
- }
-
- bool hide_data;
- public bool HideData {
- get { return hide_data; }
- set { hide_data = value; }
- }
-
- bool is_static;
- public bool Static {
- get { return is_static; }
- set { is_static = value; }
- }
-
- public Parameter GetCountParameter (string param_name)
- {
- foreach (Parameter p in this)
- if (p.Name == param_name) {
- p.IsCount = true;
- return p;
- }
- return null;
- }
-
- void Clear ()
- {
- elem = null;
- param_list.Clear ();
- param_list = null;
- }
-
- public IEnumerator GetEnumerator ()
- {
- return param_list.GetEnumerator ();
- }
-
- bool valid = false;
-
- public bool Validate (LogWriter log)
- {
- if (valid)
- return true;
-
- if (elem == null)
- return false;
-
- for (int i = first_is_instance ? 1 : 0; i < elem.ChildNodes.Count; i++) {
- XmlElement parm = elem.ChildNodes [i] as XmlElement;
- if (parm == null || parm.Name != "parameter")
- continue;
- Parameter p = new Parameter (parm);
-
- if (p.IsEllipsis) {
- log.Warn ("Ellipsis parameter: hide and bind manually if no alternative exists. ");
- Clear ();
- return false;
- }
-
- if ((p.CSType == "") || (p.Name == "") ||
- (p.MarshalType == "") || (SymbolTable.Table.CallByName(p.CType, p.Name) == "")) {
- log.Warn ("Unknown type {1} on parameter {0}", p.Name, p.CType);
- Clear ();
- return false;
- }
-
- IGeneratable gen = p.Generatable;
-
- if (p.IsArray) {
- p = new ArrayParameter (parm);
- if (i < elem.ChildNodes.Count - 1) {
- XmlElement next = elem.ChildNodes [i + 1] as XmlElement;
- if (next != null || next.Name == "parameter") {
- Parameter c = new Parameter (next);
- if (c.IsCount) {
- p = new ArrayCountPair (parm, next, false);
- i++;
- }
- }
- }
- } else if (p.IsCount) {
- p.IsCount = false;
- if (i < elem.ChildNodes.Count - 1) {
- XmlElement next = elem.ChildNodes [i + 1] as XmlElement;
- if (next != null || next.Name == "parameter") {
- Parameter a = new Parameter (next);
- if (a.IsArray) {
- p = new ArrayCountPair (next, parm, true);
- i++;
- }
- }
- }
- } else if (p.CType == "GError**")
- p = new ErrorParameter (parm);
- else if (gen is StructBase || gen is ByRefGen) {
- p = new StructParameter (parm);
- } else if (gen is CallbackGen) {
- has_cb = true;
- }
- param_list.Add (p);
- }
-
- if (has_cb && Count > 2 && this [Count - 3].Generatable is CallbackGen && this [Count - 2].IsUserData && this [Count - 1].IsDestroyNotify)
- this [Count - 3].Scope = "notified";
-
- valid = true;
- return true;
- }
-
- public bool IsAccessor {
- get {
- return VisibleCount == 1 && AccessorParam.PassAs == "out";
- }
- }
-
- public Parameter AccessorParam {
- get {
- foreach (Parameter p in this) {
- if (!IsHidden (p))
- return p;
- }
- return null;
- }
- }
-
- public string AccessorReturnType {
- get {
- Parameter p = AccessorParam;
- if (p != null)
- return p.CSType;
- else
- return null;
- }
- }
-
- public string AccessorName {
- get {
- Parameter p = AccessorParam;
- if (p != null)
- return p.Name;
- else
- return null;
- }
- }
-
- public string ImportSignature {
- get {
- if (Count == 0)
- return String.Empty;
-
- string[] result = new string [Count];
- for (int i = 0; i < Count; i++)
- result [i] = this [i].NativeSignature;
-
- return String.Join (", ", result);
- }
- }
- }
-}
-
+// GtkSharp.Generation.Parameters.cs - The Parameters Generation Class. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.Collections.Generic; + using System.Xml; + + public class Parameters : IEnumerable<Parameter> { + + IList<Parameter> param_list = new List<Parameter> (); + XmlElement elem; + bool first_is_instance; + + public Parameters (XmlElement elem) : this (elem, false) { } + + public Parameters (XmlElement elem, bool first_is_instance) + { + if (elem == null) + valid = true; + this.elem = elem; + this.first_is_instance = first_is_instance; + if (first_is_instance) + is_static = false; + } + + public int Count { + get { return param_list.Count; } + } + + public int VisibleCount { + get { + int visible = 0; + foreach (Parameter p in this) { + if (!IsHidden (p)) + visible++; + } + return visible; + } + } + + public Parameter this [int idx] { + get { + return param_list [idx]; + } + } + + public bool IsHidden (Parameter p) + { + int idx = param_list.IndexOf (p); + + if (idx > 0 && p.IsLength && p.PassAs == String.Empty && this [idx - 1].IsString) + return true; + + if (p.IsCount) + return true; + + if (p.CType == "GError**") + return true; + + if (HasCB || HideData) { + if (p.IsUserData && (idx == Count - 1)) + return true; + if (p.IsUserData && (idx == Count - 2) && this [Count - 1] is ErrorParameter) + return true; + if (p.IsUserData && idx > 0 && + this [idx - 1].Generatable is CallbackGen) + return true; + if (p.IsDestroyNotify && (idx == Count - 1) && + this [idx - 1].IsUserData) + return true; + } + + return false; + } + + bool has_cb; + public bool HasCB { + get { return has_cb; } + set { has_cb = value; } + } + + public bool HasOutParam { + get { + foreach (Parameter p in this) + if (p.PassAs == "out") + return true; + return false; + } + } + + bool hide_data; + public bool HideData { + get { return hide_data; } + set { hide_data = value; } + } + + bool is_static; + public bool Static { + get { return is_static; } + set { is_static = value; } + } + + public Parameter GetCountParameter (string param_name) + { + foreach (Parameter p in this) + if (p.Name == param_name) { + p.IsCount = true; + return p; + } + return null; + } + + void Clear () + { + elem = null; + param_list.Clear (); + param_list = null; + } + + public IEnumerator<Parameter> GetEnumerator () + { + return param_list.GetEnumerator (); + } + + IEnumerator IEnumerable.GetEnumerator () + { + return GetEnumerator (); + } + + bool valid = false; + + public bool Validate (LogWriter log) + { + if (valid) + return true; + + if (elem == null) + return false; + + for (int i = first_is_instance ? 1 : 0; i < elem.ChildNodes.Count; i++) { + XmlElement parm = elem.ChildNodes [i] as XmlElement; + if (parm == null || parm.Name != "parameter") + continue; + Parameter p = new Parameter (parm); + + if (p.IsEllipsis) { + log.Warn ("Ellipsis parameter: hide and bind manually if no alternative exists. "); + Clear (); + return false; + } + + if ((p.CSType == "") || (p.Name == "") || + (p.MarshalType == "") || (SymbolTable.Table.CallByName(p.CType, p.Name) == "")) { + log.Warn ("Unknown type {1} on parameter {0}", p.Name, p.CType); + Clear (); + return false; + } + + IGeneratable gen = p.Generatable; + + if (p.IsArray) { + p = new ArrayParameter (parm); + if (i < elem.ChildNodes.Count - 1) { + XmlElement next = elem.ChildNodes [i + 1] as XmlElement; + if (next != null || next.Name == "parameter") { + Parameter c = new Parameter (next); + if (c.IsCount) { + p = new ArrayCountPair (parm, next, false); + i++; + } + } + } + } else if (p.IsCount) { + p.IsCount = false; + if (i < elem.ChildNodes.Count - 1) { + XmlElement next = elem.ChildNodes [i + 1] as XmlElement; + if (next != null || next.Name == "parameter") { + Parameter a = new Parameter (next); + if (a.IsArray) { + p = new ArrayCountPair (next, parm, true); + i++; + } + } + } + } else if (p.CType == "GError**") + p = new ErrorParameter (parm); + else if (gen is StructBase || gen is ByRefGen) { + p = new StructParameter (parm); + } else if (gen is CallbackGen) { + has_cb = true; + } + param_list.Add (p); + } + + if (has_cb && Count > 2 && this [Count - 3].Generatable is CallbackGen && this [Count - 2].IsUserData && this [Count - 1].IsDestroyNotify) + this [Count - 3].Scope = "notified"; + + valid = true; + return true; + } + + public bool IsAccessor { + get { + return VisibleCount == 1 && AccessorParam.PassAs == "out"; + } + } + + public Parameter AccessorParam { + get { + foreach (Parameter p in this) { + if (!IsHidden (p)) + return p; + } + return null; + } + } + + public string AccessorReturnType { + get { + Parameter p = AccessorParam; + if (p != null) + return p.CSType; + else + return null; + } + } + + public string AccessorName { + get { + Parameter p = AccessorParam; + if (p != null) + return p.Name; + else + return null; + } + } + + public string ImportSignature { + get { + if (Count == 0) + return String.Empty; + + string[] result = new string [Count]; + for (int i = 0; i < Count; i++) + result [i] = this [i].NativeSignature; + + return String.Join (", ", result); + } + } + } +} diff --git a/generator/Parser.cs b/generator/Parser.cs index 99581fc..2f0ba6c 100644 --- a/generator/Parser.cs +++ b/generator/Parser.cs @@ -1,189 +1,194 @@ -// GtkSharp.Generation.Parser.cs - The XML Parsing engine.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003 Ximian Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class Parser {
- const int curr_parser_version = 2;
-
- private XmlDocument Load (string filename)
- {
- XmlDocument doc = new XmlDocument ();
-
- try {
- Stream stream = File.OpenRead (filename);
- doc.Load (stream);
- stream.Close ();
- } catch (XmlException e) {
- Console.WriteLine ("Invalid XML file.");
- Console.WriteLine (e);
- doc = null;
- }
-
- return doc;
- }
-
- public IGeneratable[] Parse (string filename)
- {
- XmlDocument doc = Load (filename);
- if (doc == null)
- return null;
-
- XmlElement root = doc.DocumentElement;
-
- if ((root == null) || !root.HasChildNodes) {
- Console.WriteLine ("No Namespaces found.");
- return null;
- }
-
- int parser_version;
- if (root.HasAttribute ("parser_version")) {
- try {
- parser_version = int.Parse (root.GetAttribute ("parser_version"));
- } catch {
- Console.WriteLine ("ERROR: Unable to parse parser_version attribute value \"{0}\" to a number. Input file {1} will be ignored", root.GetAttribute ("parser_version"), filename);
- return null;
- }
- } else
- parser_version = 1;
-
- if (parser_version > curr_parser_version)
- Console.WriteLine ("WARNING: The input file {0} was created by a parser that was released after this version of the generator. Consider updating the code generator if you experience problems.", filename);
-
- ArrayList gens = new ArrayList ();
-
- foreach (XmlNode child in root.ChildNodes) {
- XmlElement elem = child as XmlElement;
- if (elem == null)
- continue;
-
- switch (child.Name) {
- case "namespace":
- gens.AddRange (ParseNamespace (elem));
- break;
- case "symbol":
- gens.Add (ParseSymbol (elem));
- break;
- default:
- Console.WriteLine ("Parser::Parse - Unexpected child node: " + child.Name);
- break;
- }
- }
-
- return (IGeneratable[]) gens.ToArray (typeof (IGeneratable));
- }
-
- private ArrayList ParseNamespace (XmlElement ns)
- {
- ArrayList result = new ArrayList ();
-
- foreach (XmlNode def in ns.ChildNodes) {
-
- XmlElement elem = def as XmlElement;
- if (elem == null)
- continue;
-
- if (elem.HasAttribute("hidden"))
- continue;
-
- bool is_opaque = false;
- if (elem.GetAttribute ("opaque") == "true" ||
- elem.GetAttribute ("opaque") == "1")
- is_opaque = true;
-
- switch (def.Name) {
- case "alias":
- string aname = elem.GetAttribute("cname");
- string atype = elem.GetAttribute("type");
- if ((aname == "") || (atype == ""))
- continue;
- result.Add (new AliasGen (aname, atype));
- break;
- case "boxed":
- result.Add (is_opaque ? new OpaqueGen (ns, elem) as object : new BoxedGen (ns, elem) as object);
- break;
- case "callback":
- result.Add (new CallbackGen (ns, elem));
- break;
- case "enum":
- result.Add (new EnumGen (ns, elem));
- break;
- case "interface":
- result.Add (new InterfaceGen (ns, elem));
- break;
- case "object":
- result.Add (new ObjectGen (ns, elem));
- break;
- case "class":
- result.Add (new ClassGen (ns, elem));
- break;
- case "struct":
- result.Add (is_opaque ? new OpaqueGen (ns, elem) as object : new StructGen (ns, elem) as object);
- break;
- default:
- Console.WriteLine ("Parser::ParseNamespace - Unexpected node: " + def.Name);
- break;
- }
- }
-
- return result;
- }
-
- private IGeneratable ParseSymbol (XmlElement symbol)
- {
- string type = symbol.GetAttribute ("type");
- string cname = symbol.GetAttribute ("cname");
- string name = symbol.GetAttribute ("name");
- IGeneratable result = null;
-
- if (type == "simple") {
- if (symbol.HasAttribute ("default_value"))
- result = new SimpleGen (cname, name, symbol.GetAttribute ("default_value"));
- else {
- Console.WriteLine ("Simple type element " + cname + " has no specified default value");
- result = new SimpleGen (cname, name, String.Empty);
- }
- } else if (type == "manual")
- result = new ManualGen (cname, name);
- else if (type == "ownable")
- result = new OwnableGen (cname, name);
- else if (type == "alias")
- result = new AliasGen (cname, name);
- else if (type == "marshal") {
- string mtype = symbol.GetAttribute ("marshal_type");
- string call = symbol.GetAttribute ("call_fmt");
- string from = symbol.GetAttribute ("from_fmt");
- result = new MarshalGen (cname, name, mtype, call, from);
- } else if (type == "struct") {
- result = new ByRefGen (symbol.GetAttribute ("cname"), symbol.GetAttribute ("name"));
- } else
- Console.WriteLine ("Parser::ParseSymbol - Unexpected symbol type " + type);
-
- return result;
- }
- }
-}
+// GtkSharp.Generation.Parser.cs - The XML Parsing engine. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003 Ximian Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.IO; + using System.Xml; + + public class Parser { + const int curr_parser_version = 2; + + private XmlDocument Load (string filename) + { + XmlDocument doc = new XmlDocument (); + + try { + Stream stream = File.OpenRead (filename); + doc.Load (stream); + stream.Close (); + } catch (XmlException e) { + Console.WriteLine ("Invalid XML file."); + Console.WriteLine (e); + doc = null; + } + + return doc; + } + + public IGeneratable[] Parse (string filename) + { + XmlDocument doc = Load (filename); + if (doc == null) + return null; + + XmlElement root = doc.DocumentElement; + + if ((root == null) || !root.HasChildNodes) { + Console.WriteLine ("No Namespaces found."); + return null; + } + + int parser_version; + if (root.HasAttribute ("parser_version")) { + try { + parser_version = int.Parse (root.GetAttribute ("parser_version")); + } catch { + Console.WriteLine ("ERROR: Unable to parse parser_version attribute value \"{0}\" to a number. Input file {1} will be ignored", root.GetAttribute ("parser_version"), filename); + return null; + } + } else + parser_version = 1; + + if (parser_version > curr_parser_version) + Console.WriteLine ("WARNING: The input file {0} was created by a parser that was released after this version of the generator. Consider updating the code generator if you experience problems.", filename); + + var gens = new List<IGeneratable> (); + + foreach (XmlNode child in root.ChildNodes) { + XmlElement elem = child as XmlElement; + if (elem == null) + continue; + + switch (child.Name) { + case "namespace": + gens.AddRange (ParseNamespace (elem)); + break; + case "symbol": + gens.Add (ParseSymbol (elem)); + break; + default: + Console.WriteLine ("Parser::Parse - Unexpected child node: " + child.Name); + break; + } + } + + return gens.ToArray (); + } + + private IList<IGeneratable> ParseNamespace (XmlElement ns) + { + var result = new List<IGeneratable> (); + + foreach (XmlNode def in ns.ChildNodes) { + + XmlElement elem = def as XmlElement; + if (elem == null) + continue; + + if (elem.GetAttributeAsBoolean ("hidden")) + continue; + + bool is_opaque = elem.GetAttributeAsBoolean ("opaque"); + + switch (def.Name) { + case "alias": + string aname = elem.GetAttribute("cname"); + string atype = elem.GetAttribute("type"); + if ((aname == "") || (atype == "")) + continue; + result.Add (new AliasGen (aname, atype)); + break; + case "boxed": + if (is_opaque) { + result.Add (new OpaqueGen (ns, elem)); + } else { + result.Add (new BoxedGen (ns, elem)); + } + break; + case "callback": + result.Add (new CallbackGen (ns, elem)); + break; + case "enum": + result.Add (new EnumGen (ns, elem)); + break; + case "interface": + result.Add (new InterfaceGen (ns, elem)); + break; + case "object": + result.Add (new ObjectGen (ns, elem)); + break; + case "class": + result.Add (new ClassGen (ns, elem)); + break; + case "struct": + if (is_opaque) { + result.Add (new OpaqueGen (ns, elem)); + } else { + result.Add (new StructGen (ns, elem)); + } + break; + default: + Console.WriteLine ("Parser::ParseNamespace - Unexpected node: " + def.Name); + break; + } + } + + return result; + } + + private IGeneratable ParseSymbol (XmlElement symbol) + { + string type = symbol.GetAttribute ("type"); + string cname = symbol.GetAttribute ("cname"); + string name = symbol.GetAttribute ("name"); + IGeneratable result = null; + + if (type == "simple") { + if (symbol.HasAttribute ("default_value")) + result = new SimpleGen (cname, name, symbol.GetAttribute ("default_value")); + else { + Console.WriteLine ("Simple type element " + cname + " has no specified default value"); + result = new SimpleGen (cname, name, String.Empty); + } + } else if (type == "manual") + result = new ManualGen (cname, name); + else if (type == "ownable") + result = new OwnableGen (cname, name); + else if (type == "alias") + result = new AliasGen (cname, name); + else if (type == "marshal") { + string mtype = symbol.GetAttribute ("marshal_type"); + string call = symbol.GetAttribute ("call_fmt"); + string from = symbol.GetAttribute ("from_fmt"); + result = new MarshalGen (cname, name, mtype, call, from); + } else if (type == "struct") { + result = new ByRefGen (symbol.GetAttribute ("cname"), symbol.GetAttribute ("name")); + } else + Console.WriteLine ("Parser::ParseSymbol - Unexpected symbol type " + type); + + return result; + } + } +} diff --git a/generator/Property.cs b/generator/Property.cs index 91dd066..4555b1d 100644 --- a/generator/Property.cs +++ b/generator/Property.cs @@ -1,194 +1,193 @@ -// GtkSharp.Generation.Property.cs - The Property Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class Property : PropertyBase {
-
- public Property (XmlElement elem, ClassBase container_type) : base (elem, container_type) {}
-
- public bool Validate (LogWriter log)
- {
- if (CSType == "" && !Hidden) {
- log.Member = Name;
- log.Warn ("property has unknown type '{0}' ", CType);
- Statistics.ThrottledCount++;
- return false;
- }
-
- return true;
- }
-
- bool Readable {
- get {
- return elem.GetAttribute ("readable") == "true";
- }
- }
-
- bool Writable {
- get {
- return elem.GetAttribute ("writeable") == "true" &&
- !elem.HasAttribute ("construct-only");
- }
- }
-
- bool IsDeprecated {
- get {
- return !container_type.IsDeprecated &&
- (elem.GetAttribute ("deprecated") == "1" ||
- elem.GetAttribute ("deprecated") == "true");
- }
- }
-
- protected virtual string PropertyAttribute (string qpname) {
- return "[GLib.Property (" + qpname + ")]";
- }
-
- protected virtual string RawGetter (string qpname) {
- return "GetProperty (" + qpname + ")";
- }
-
- protected virtual string RawSetter (string qpname) {
- return "SetProperty(" + qpname + ", val)";
- }
-
- public void GenerateDecl (StreamWriter sw, string indent)
- {
- if (Hidden || (!Readable && !Writable))
- return;
-
- string name = Name;
- if (name == container_type.Name)
- name += "Prop";
-
- sw.WriteLine (indent + CSType + " " + name + " {");
- sw.Write (indent + "\t");
- if (Readable || Getter != null)
- sw.Write ("get; ");
- if (Writable || Setter != null)
- sw.Write ("set;");
- sw.WriteLine ();
- sw.WriteLine (indent + "}");
- }
-
- public void Generate (GenerationInfo gen_info, string indent, ClassBase implementor)
- {
- SymbolTable table = SymbolTable.Table;
- StreamWriter sw = gen_info.Writer;
-
- if (Hidden || (!Readable && !Writable))
- return;
-
- string modifiers = "";
-
- if (IsNew || (container_type.Parent != null && container_type.Parent.GetPropertyRecursively (Name) != null))
- modifiers = "new ";
- else if (implementor != null && implementor.Parent != null && implementor.Parent.GetPropertyRecursively (Name) != null)
- modifiers = "new ";
-
- string name = Name;
- if (name == container_type.Name) {
- name += "Prop";
- }
- string qpname = "\"" + CName + "\"";
-
- string v_type = "";
- if (table.IsInterface (CType)) {
- v_type = "(GLib.Object)";
- } else if (table.IsOpaque (CType)) {
- v_type = "(GLib.Opaque)";
- } else if (table.IsEnum (CType)) {
- v_type = "(Enum)";
- }
-
- GenerateImports (gen_info, indent);
-
- if (IsDeprecated ||
- (Getter != null && Getter.IsDeprecated) ||
- (Setter != null && Setter.IsDeprecated))
- sw.WriteLine (indent + "[Obsolete]");
- sw.WriteLine (indent + PropertyAttribute (qpname));
- sw.WriteLine (indent + "public " + modifiers + CSType + " " + name + " {");
- indent += "\t";
-
- if (Getter != null) {
- sw.Write(indent + "get ");
- Getter.GenerateBody(gen_info, implementor, "\t");
- sw.WriteLine();
- } else if (Readable) {
- sw.WriteLine(indent + "get {");
- sw.WriteLine(indent + "\tGLib.Value val = " + RawGetter (qpname) + ";");
- if (table.IsOpaque (CType) || table.IsBoxed (CType)) {
- sw.WriteLine(indent + "\t" + CSType + " ret = (" + CSType + ") val;");
- } else if (table.IsInterface (CType)) {
- // Do we have to dispose the GLib.Object from the GLib.Value?
- sw.WriteLine (indent + "\t{0} ret = {0}Adapter.GetObject ((GLib.Object) val);", CSType);
- } else {
- sw.Write(indent + "\t" + CSType + " ret = ");
- sw.Write ("(" + CSType + ") ");
- if (v_type != "") {
- sw.Write(v_type + " ");
- }
- sw.WriteLine("val;");
- }
-
- sw.WriteLine(indent + "\tval.Dispose ();");
- sw.WriteLine(indent + "\treturn ret;");
- sw.WriteLine(indent + "}");
- }
-
- if (Setter != null) {
- sw.Write(indent + "set ");
- Setter.GenerateBody(gen_info, implementor, "\t");
- sw.WriteLine();
- } else if (Writable) {
- sw.WriteLine(indent + "set {");
- sw.Write(indent + "\tGLib.Value val = ");
- if (table.IsBoxed (CType)) {
- sw.WriteLine("(GLib.Value) value;");
- } else if (table.IsOpaque (CType)) {
- sw.WriteLine("new GLib.Value(value, \"{0}\");", CType);
- } else {
- sw.Write("new GLib.Value(");
- if (v_type != "" && !(table.IsObject (CType) || table.IsInterface (CType) || table.IsOpaque (CType))) {
- sw.Write(v_type + " ");
- }
- sw.WriteLine("value);");
- }
- sw.WriteLine(indent + "\t" + RawSetter (qpname) + ";");
- sw.WriteLine(indent + "\tval.Dispose ();");
- sw.WriteLine(indent + "}");
- }
-
- sw.WriteLine(indent.Substring (1) + "}");
- sw.WriteLine();
-
- Statistics.PropCount++;
- }
- }
-}
-
+// GtkSharp.Generation.Property.cs - The Property Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Xml; + + public class Property : PropertyBase { + + public Property (XmlElement elem, ClassBase container_type) : base (elem, container_type) {} + + public bool Validate (LogWriter log) + { + if (CSType == "" && !Hidden) { + log.Member = Name; + log.Warn ("property has unknown type '{0}' ", CType); + Statistics.ThrottledCount++; + return false; + } + + return true; + } + + bool Readable { + get { + return elem.GetAttributeAsBoolean ("readable"); + } + } + + bool Writable { + get { + return elem.GetAttributeAsBoolean ("writeable") && + !elem.GetAttributeAsBoolean ("construct-only"); + } + } + + bool IsDeprecated { + get { + return !container_type.IsDeprecated && + elem.GetAttributeAsBoolean ("deprecated"); + } + } + + protected virtual string PropertyAttribute (string qpname) { + return "[GLib.Property (" + qpname + ")]"; + } + + protected virtual string RawGetter (string qpname) { + return "GetProperty (" + qpname + ")"; + } + + protected virtual string RawSetter (string qpname) { + return "SetProperty(" + qpname + ", val)"; + } + + public void GenerateDecl (StreamWriter sw, string indent) + { + if (Hidden || (!Readable && !Writable)) + return; + + string name = Name; + if (name == container_type.Name) + name += "Prop"; + + sw.WriteLine (indent + CSType + " " + name + " {"); + sw.Write (indent + "\t"); + if (Readable || Getter != null) + sw.Write ("get; "); + if (Writable || Setter != null) + sw.Write ("set;"); + sw.WriteLine (); + sw.WriteLine (indent + "}"); + } + + public void Generate (GenerationInfo gen_info, string indent, ClassBase implementor) + { + SymbolTable table = SymbolTable.Table; + StreamWriter sw = gen_info.Writer; + + if (Hidden || (!Readable && !Writable)) + return; + + string modifiers = ""; + + if (IsNew || (container_type.Parent != null && container_type.Parent.GetPropertyRecursively (Name) != null)) + modifiers = "new "; + else if (implementor != null && implementor.Parent != null && implementor.Parent.GetPropertyRecursively (Name) != null) + modifiers = "new "; + + string name = Name; + if (name == container_type.Name) { + name += "Prop"; + } + string qpname = "\"" + CName + "\""; + + string v_type = ""; + if (table.IsInterface (CType)) { + v_type = "(GLib.Object)"; + } else if (table.IsOpaque (CType)) { + v_type = "(GLib.Opaque)"; + } else if (table.IsEnum (CType)) { + v_type = "(Enum)"; + } + + GenerateImports (gen_info, indent); + + if (IsDeprecated || + (Getter != null && Getter.IsDeprecated) || + (Setter != null && Setter.IsDeprecated)) + sw.WriteLine (indent + "[Obsolete]"); + sw.WriteLine (indent + PropertyAttribute (qpname)); + sw.WriteLine (indent + "public " + modifiers + CSType + " " + name + " {"); + indent += "\t"; + + if (Getter != null) { + sw.Write(indent + "get "); + Getter.GenerateBody(gen_info, implementor, "\t"); + sw.WriteLine(); + } else if (Readable) { + sw.WriteLine(indent + "get {"); + sw.WriteLine(indent + "\tGLib.Value val = " + RawGetter (qpname) + ";"); + if (table.IsOpaque (CType) || table.IsBoxed (CType)) { + sw.WriteLine(indent + "\t" + CSType + " ret = (" + CSType + ") val;"); + } else if (table.IsInterface (CType)) { + // Do we have to dispose the GLib.Object from the GLib.Value? + sw.WriteLine (indent + "\t{0} ret = {0}Adapter.GetObject ((GLib.Object) val);", CSType); + } else { + sw.Write(indent + "\t" + CSType + " ret = "); + sw.Write ("(" + CSType + ") "); + if (v_type != "") { + sw.Write(v_type + " "); + } + sw.WriteLine("val;"); + } + + sw.WriteLine(indent + "\tval.Dispose ();"); + sw.WriteLine(indent + "\treturn ret;"); + sw.WriteLine(indent + "}"); + } + + if (Setter != null) { + sw.Write(indent + "set "); + Setter.GenerateBody(gen_info, implementor, "\t"); + sw.WriteLine(); + } else if (Writable) { + sw.WriteLine(indent + "set {"); + sw.Write(indent + "\tGLib.Value val = "); + if (table.IsBoxed (CType)) { + sw.WriteLine("(GLib.Value) value;"); + } else if (table.IsOpaque (CType)) { + sw.WriteLine("new GLib.Value(value, \"{0}\");", CType); + } else { + sw.Write("new GLib.Value("); + if (v_type != "" && !(table.IsObject (CType) || table.IsInterface (CType) || table.IsOpaque (CType))) { + sw.Write(v_type + " "); + } + sw.WriteLine("value);"); + } + sw.WriteLine(indent + "\t" + RawSetter (qpname) + ";"); + sw.WriteLine(indent + "\tval.Dispose ();"); + sw.WriteLine(indent + "}"); + } + + sw.WriteLine(indent.Substring (1) + "}"); + sw.WriteLine(); + + Statistics.PropCount++; + } + } +} + diff --git a/generator/PropertyBase.cs b/generator/PropertyBase.cs index ef106f6..a673b71 100644 --- a/generator/PropertyBase.cs +++ b/generator/PropertyBase.cs @@ -74,13 +74,13 @@ namespace GtkSharp.Generation { public bool Hidden { get { - return elem.HasAttribute("hidden"); + return elem.GetAttributeAsBoolean ("hidden"); } } protected bool IsNew { get { - return elem.HasAttribute("new_flag"); + return elem.GetAttributeAsBoolean ("new_flag"); } } diff --git a/generator/ReturnValue.cs b/generator/ReturnValue.cs index 6da64f3..40d139f 100644 --- a/generator/ReturnValue.cs +++ b/generator/ReturnValue.cs @@ -1,189 +1,194 @@ -// GtkSharp.Generation.ReturnValue.cs - The ReturnValue Generatable.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2004-2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Xml;
-
- public class ReturnValue {
-
-
- bool is_null_term;
- bool is_array;
- bool elements_owned;
- bool owned;
- string array_length_param = String.Empty;
- string ctype = String.Empty;
- string default_value = String.Empty;
- string element_ctype = String.Empty;
- Parameter count_param;
-
- public ReturnValue (XmlElement elem)
- {
- if (elem != null) {
- is_null_term = elem.HasAttribute ("null_term_array");
- is_array = elem.HasAttribute ("array") || elem.HasAttribute ("array_length_param");
- array_length_param = elem.GetAttribute ("array_length_param");
- elements_owned = elem.GetAttribute ("elements_owned") == "true";
- owned = elem.GetAttribute ("owned") == "true";
- ctype = elem.GetAttribute("type");
- default_value = elem.GetAttribute ("default_value");
- element_ctype = elem.GetAttribute ("element_type");
- }
- }
-
- public Parameter CountParameter {
- get { return count_param; }
- set { count_param = value; }
- }
-
- public string CountParameterName {
- get { return array_length_param; }
- }
-
- public string CType {
- get {
- return ctype;
- }
- }
-
- public string CSType {
- get {
- if (IGen == null)
- return String.Empty;
-
- if (ElementType != String.Empty)
- return ElementType + "[]";
-
- return IGen.QualifiedName + (is_array || is_null_term ? "[]" : String.Empty);
- }
- }
-
- public string DefaultValue {
- get {
- if (default_value != null && default_value.Length > 0)
- return default_value;
- if (IGen == null)
- return String.Empty;
- return IGen.DefaultValue;
- }
- }
-
- string ElementType {
- get {
- if (element_ctype.Length > 0)
- return SymbolTable.Table.GetCSType (element_ctype);
-
- return String.Empty;
- }
- }
-
- IGeneratable igen;
- public IGeneratable IGen {
- get {
- if (igen == null)
- igen = SymbolTable.Table [CType];
- return igen;
- }
- }
-
- public bool IsVoid {
- get {
- return CSType == "void";
- }
- }
-
- public string MarshalType {
- get {
- if (IGen == null)
- return String.Empty;
- else if (is_array || is_null_term)
- return "IntPtr";
- return IGen.MarshalType;
- }
- }
-
- public string ToNativeType {
- get {
- if (IGen == null)
- return String.Empty;
- return IGen.MarshalType + (is_array || is_null_term ? "[]" : String.Empty);
- }
- }
-
- public string FromNative (string var)
- {
- if (IGen == null)
- return String.Empty;
-
- if (ElementType != String.Empty) {
- string args = (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false");
- if (IGen.QualifiedName == "GLib.PtrArray")
- return String.Format ("({0}[]) GLib.Marshaller.PtrArrayToArray ({1}, {2}, typeof({0}))", ElementType, var, args);
- else
- return String.Format ("({0}[]) GLib.Marshaller.ListPtrToArray ({1}, typeof({2}), {3}, typeof({4}))", ElementType, var, IGen.QualifiedName, args, element_ctype == "gfilename*" ? "GLib.ListBase.FilenameString" : ElementType);
- } else if (IGen is IOwnable)
- return ((IOwnable)IGen).FromNative (var, owned);
- else if (is_null_term)
- return String.Format ("GLib.Marshaller.NullTermPtrToStringArray ({0}, {1})", var, owned ? "true" : "false");
- else if (is_array)
- return String.Format ("({0}) GLib.Marshaller.ArrayPtrToArray ({1}, typeof ({2}), (int){3}native_{4}, true)", CSType, var, IGen.QualifiedName, CountParameter.CSType == "int" ? String.Empty : "(" + CountParameter.CSType + ")", CountParameter.Name);
- else
- return IGen.FromNative (var);
- }
-
- public string ToNative (string var)
- {
- if (IGen == null)
- return String.Empty;
-
- if (ElementType.Length > 0) {
- string args = ", typeof (" + ElementType + "), " + (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false");
- var = "new " + IGen.QualifiedName + "(" + var + args + ")";
- } else if (is_null_term)
- return String.Format ("GLib.Marshaller.StringArrayToNullTermPointer ({0})", var);
- else if (is_array)
- return String.Format ("GLib.Marshaller.ArrayToArrayPtr ({0})", var);
-
- if (IGen is IManualMarshaler)
- return (IGen as IManualMarshaler).AllocNative (var);
- else if (IGen is ObjectGen && owned)
- return var + " == null ? IntPtr.Zero : " + var + ".OwnedHandle";
- else if (IGen is OpaqueGen && owned)
- return var + " == null ? IntPtr.Zero : " + var + ".OwnedCopy";
- else
- return IGen.CallByName (var);
- }
-
- public bool Validate (LogWriter log)
- {
- if (MarshalType == "" || CSType == "") {
- log.Warn ("Unknown return type: {0}", CType);
- return false;
- } else if ((CSType == "GLib.List" || CSType == "GLib.SList") && String.IsNullOrEmpty (ElementType))
- log.Warn ("Returns {0} with unknown element type. Add element_type attribute with gapi-fixup.", CType);
-
- return true;
- }
- }
-}
-
+// GtkSharp.Generation.ReturnValue.cs - The ReturnValue Generatable. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2004-2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Xml; + + public class ReturnValue { + + + bool is_null_term; + bool is_array; + bool elements_owned; + bool owned; + string array_length_param = String.Empty; + string ctype = String.Empty; + string default_value = String.Empty; + string element_ctype = String.Empty; + Parameter count_param; + + public ReturnValue (XmlElement elem) + { + if (elem != null) { + is_null_term = elem.GetAttributeAsBoolean ("null_term_array"); + is_array = elem.GetAttributeAsBoolean ("array") || elem.HasAttribute ("array_length_param"); + array_length_param = elem.GetAttribute ("array_length_param"); + elements_owned = elem.GetAttributeAsBoolean ("elements_owned"); + owned = elem.GetAttributeAsBoolean ("owned"); + ctype = elem.GetAttribute("type"); + default_value = elem.GetAttribute ("default_value"); + element_ctype = elem.GetAttribute ("element_type"); + } + } + + public Parameter CountParameter { + get { return count_param; } + set { count_param = value; } + } + + public string CountParameterName { + get { return array_length_param; } + } + + public string CType { + get { + return ctype; + } + } + + public string CSType { + get { + if (IGen == null) + return String.Empty; + + if (ElementType != String.Empty) + return ElementType + "[]"; + + return IGen.QualifiedName + (is_array || is_null_term ? "[]" : String.Empty); + } + } + + public string DefaultValue { + get { + if (default_value != null && default_value.Length > 0) + return default_value; + if (IGen == null) + return String.Empty; + return IGen.DefaultValue; + } + } + + string ElementType { + get { + if (element_ctype.Length > 0) + return SymbolTable.Table.GetCSType (element_ctype); + + return String.Empty; + } + } + + IGeneratable igen; + public IGeneratable IGen { + get { + if (igen == null) + igen = SymbolTable.Table [CType]; + return igen; + } + } + + public bool IsVoid { + get { + return CSType == "void"; + } + } + + public string MarshalType { + get { + if (IGen == null) + return String.Empty; + else if (is_array || is_null_term) + return "IntPtr"; + return IGen.MarshalType; + } + } + + public string ToNativeType { + get { + if (IGen == null) + return String.Empty; + return IGen.MarshalType + (is_array || is_null_term ? "[]" : String.Empty); + } + } + + public string FromNative (string var) + { + if (IGen == null) + return String.Empty; + + if (ElementType != String.Empty) { + string args = (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false"); + if (IGen.QualifiedName == "GLib.PtrArray") + return String.Format ("({0}[]) GLib.Marshaller.PtrArrayToArray ({1}, {2}, typeof({0}))", ElementType, var, args); + else + return String.Format ("({0}[]) GLib.Marshaller.ListPtrToArray ({1}, typeof({2}), {3}, typeof({4}))", ElementType, var, IGen.QualifiedName, args, element_ctype == "gfilename*" ? "GLib.ListBase.FilenameString" : ElementType); + } else if (IGen is IOwnable) + return ((IOwnable)IGen).FromNative (var, owned); + else if (is_null_term) + return String.Format ("GLib.Marshaller.NullTermPtrToStringArray ({0}, {1})", var, owned ? "true" : "false"); + else if (is_array) + return String.Format ("({0}) GLib.Marshaller.ArrayPtrToArray ({1}, typeof ({2}), (int){3}native_{4}, true)", CSType, var, IGen.QualifiedName, CountParameter.CSType == "int" ? String.Empty : "(" + CountParameter.CSType + ")", CountParameter.Name); + else + return IGen.FromNative (var); + } + + public string ToNative (string var) + { + if (IGen == null) + return String.Empty; + + if (ElementType.Length > 0) { + string args = ", typeof (" + ElementType + "), " + (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false"); + var = "new " + IGen.QualifiedName + "(" + var + args + ")"; + } else if (is_null_term) + return String.Format ("GLib.Marshaller.StringArrayToNullTermPointer ({0})", var); + else if (is_array) + return String.Format ("GLib.Marshaller.ArrayToArrayPtr ({0})", var); + + if (IGen is IManualMarshaler) + return (IGen as IManualMarshaler).AllocNative (var); + else if (IGen is ObjectGen && owned) + return var + " == null ? IntPtr.Zero : " + var + ".OwnedHandle"; + else if (IGen is OpaqueGen && owned) + return var + " == null ? IntPtr.Zero : " + var + ".OwnedCopy"; + else + return IGen.CallByName (var); + } + + public bool Validate (LogWriter log) + { + if (MarshalType == "" || CSType == "") { + log.Warn ("Unknown return type: {0}", CType); + return false; + } else if ((CSType == "GLib.List" || CSType == "GLib.SList") && String.IsNullOrEmpty (ElementType)) + log.Warn ("Returns {0} with unknown element type. Add element_type attribute with gapi-fixup.", CType); + + if (is_array && !is_null_term && String.IsNullOrEmpty (array_length_param)) { + log.Warn ("Returns an array with undeterminable length. Add null_term_array or array_length_param attribute with gapi-fixup."); + return false; + } + + return true; + } + } +} + diff --git a/generator/Signal.cs b/generator/Signal.cs index ee61c98..5107f29 100644 --- a/generator/Signal.cs +++ b/generator/Signal.cs @@ -1,330 +1,330 @@ -// GtkSharp.Generation.Signal.cs - The Signal Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2005 Novell, Inc.
-// Copyright (c) 2007 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.IO;
- using System.Xml;
-
- public class Signal {
-
- bool marshaled;
- string name;
- XmlElement elem;
- ReturnValue retval;
- Parameters parms;
- ObjectBase container_type;
-
- public Signal (XmlElement elem, ObjectBase container_type)
- {
- this.elem = elem;
- name = elem.GetAttribute ("name");
- marshaled = elem.GetAttribute ("manual") == "true";
- retval = new ReturnValue (elem ["return-type"]);
- parms = new Parameters (elem["parameters"], container_type.ParserVersion == 1 ? true : false);
- this.container_type = container_type;
- }
-
- bool Marshaled {
- get { return marshaled; }
- }
-
- public string Name {
- get {
- return name;
- }
- set {
- name = value;
- }
- }
-
- public bool Validate (LogWriter log)
- {
- log.Member = Name;
- if (Name == "") {
- log.Warn ("Nameless signal found. Add name attribute with fixup.");
- Statistics.ThrottledCount++;
- return false;
- } else if (!parms.Validate (log) || !retval.Validate (log)) {
- Statistics.ThrottledCount++;
- return false;
- }
- return true;
- }
-
- public void GenerateDecl (StreamWriter sw)
- {
- if (elem.HasAttribute("new_flag") || (container_type != null && container_type.GetSignalRecursively (Name) != null))
- sw.Write("new ");
-
- sw.WriteLine ("\t\tevent " + EventHandlerQualifiedName + " " + Name + ";");
- }
-
- public string CName {
- get {
- return "\"" + elem.GetAttribute("cname") + "\"";
- }
- }
-
- string CallbackSig {
- get {
- string result = "";
- for (int i = 0; i < parms.Count; i++) {
- if (i > 0)
- result += ", ";
-
- Parameter p = parms [i];
- if (p.PassAs != "" && !(p.Generatable is StructBase))
- result += p.PassAs + " ";
- result += (p.MarshalType + " arg" + i);
- }
-
- return result;
- }
- }
-
- string CallbackName {
- get { return Name + "SignalCallback"; }
- }
-
- string DelegateName {
- get { return Name + "SignalDelegate"; }
- }
-
- private string EventArgsName {
- get {
- if (IsEventHandler)
- return "EventArgs";
- else
- return Name + "Args";
- }
- }
-
- private string EventArgsQualifiedName {
- get {
- if (IsEventHandler)
- return "System.EventArgs";
- else
- return container_type.NS + "." + Name + "Args";
- }
- }
-
- private string EventHandlerName {
- get {
- if (IsEventHandler)
- return "EventHandler";
- else if (SymbolTable.Table [container_type.NS + Name + "Handler"] != null)
- return Name + "EventHandler";
- else
- return Name + "Handler";
- }
- }
-
- private string EventHandlerQualifiedName {
- get {
- if (IsEventHandler)
- return "System.EventHandler";
- else
- return container_type.NS + "." + EventHandlerName;
- }
- }
-
- private bool IsEventHandler {
- get {
- return retval.CSType == "void" && parms.Count == 0;
- }
- }
-
- public string GenArgsInitialization (StreamWriter sw)
- {
- if (parms.Count > 0)
- sw.WriteLine("\t\t\t\targs.Args = new object[" + parms.Count + "];");
- string finish = "";
- for (int idx = 0; idx < parms.Count; idx++) {
- Parameter p = parms [idx];
- IGeneratable igen = p.Generatable;
- if (p.PassAs != "out") {
- if (igen is ManualGen) {
- sw.WriteLine("\t\t\t\tif (arg{0} == IntPtr.Zero)", idx);
- sw.WriteLine("\t\t\t\t\targs.Args[{0}] = null;", idx);
- sw.WriteLine("\t\t\t\telse {");
- sw.WriteLine("\t\t\t\t\targs.Args[" + idx + "] = " + p.FromNative ("arg" + idx) + ";");
- sw.WriteLine("\t\t\t\t}");
- } else
- sw.WriteLine("\t\t\t\targs.Args[" + idx + "] = " + p.FromNative ("arg" + idx) + ";");
- }
- if ((igen is StructBase || igen is ByRefGen) && p.PassAs != "")
- finish += "\t\t\t\tif (arg" + idx + " != IntPtr.Zero) System.Runtime.InteropServices.Marshal.StructureToPtr (args.Args[" + idx + "], arg" + idx + ", false);\n";
- else if (igen is IManualMarshaler && p.PassAs != "")
- finish += String.Format ("\t\t\t\targ{0} = {1};\n", idx, (igen as IManualMarshaler).AllocNative ("args.Args[" + idx + "]"));
- else if (p.PassAs != "")
- finish += "\t\t\t\targ" + idx + " = " + igen.CallByName ("((" + p.CSType + ")args.Args[" + idx + "])") + ";\n";
- }
- return finish;
- }
-
- public void GenArgsCleanup (StreamWriter sw, string finish)
- {
- if (retval.IsVoid && finish.Length == 0)
- return;
-
- sw.WriteLine("\n\t\t\ttry {");
- sw.Write (finish);
- if (!retval.IsVoid) {
- if (retval.CSType == "bool") {
- sw.WriteLine ("\t\t\t\tif (args.RetVal == null)");
- sw.WriteLine ("\t\t\t\t\treturn false;");
- }
- sw.WriteLine ("\t\t\t\treturn {0};", retval.ToNative (String.Format ("(({0}) args.RetVal)", retval.CSType)));
- }
- sw.WriteLine("\t\t\t} catch (Exception) {");
- sw.WriteLine ("\t\t\t\tException ex = new Exception (\"args.RetVal or 'out' property unset or set to incorrect type in " + EventHandlerQualifiedName + " callback\");");
- sw.WriteLine("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (ex, true);");
-
- sw.WriteLine ("\t\t\t\t// NOTREACHED: above call doesn't return.");
- sw.WriteLine ("\t\t\t\tthrow ex;");
- sw.WriteLine("\t\t\t}");
- }
-
- public void GenCallback (StreamWriter sw)
- {
- if (IsEventHandler)
- return;
-
- string native_signature = "IntPtr inst";
- if (parms.Count > 0)
- native_signature += ", " + CallbackSig;
- native_signature += ", IntPtr gch";
-
- sw.WriteLine ("\t\t[UnmanagedFunctionPointer (CallingConvention.Cdecl)]");
- sw.WriteLine ("\t\tdelegate {0} {1} ({2});", retval.ToNativeType, DelegateName, native_signature);
- sw.WriteLine ();
- sw.WriteLine ("\t\tstatic {0} {1} ({2})", retval.ToNativeType, CallbackName, native_signature);
- sw.WriteLine("\t\t{");
- sw.WriteLine("\t\t\t{0} args = new {0} ();", EventArgsQualifiedName);
- sw.WriteLine("\t\t\ttry {");
- sw.WriteLine("\t\t\t\tGLib.Signal sig = ((GCHandle) gch).Target as GLib.Signal;");
- sw.WriteLine("\t\t\t\tif (sig == null)");
- sw.WriteLine("\t\t\t\t\tthrow new Exception(\"Unknown signal GC handle received \" + gch);");
- sw.WriteLine();
- string finish = GenArgsInitialization (sw);
- sw.WriteLine("\t\t\t\t{0} handler = ({0}) sig.Handler;", EventHandlerQualifiedName);
- sw.WriteLine("\t\t\t\thandler (GLib.Object.GetObject (inst), args);");
- sw.WriteLine("\t\t\t} catch (Exception e) {");
- sw.WriteLine("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (e, false);");
- sw.WriteLine("\t\t\t}");
- GenArgsCleanup (sw, finish);
- sw.WriteLine("\t\t}");
- sw.WriteLine();
- }
-
- private bool NeedNew (ObjectBase implementor)
- {
- return elem.HasAttribute ("new_flag") ||
- (container_type != null && container_type.GetSignalRecursively (Name) != null) ||
- (implementor != null && implementor.GetSignalRecursively (Name) != null);
- }
-
- public void GenEventHandler (GenerationInfo gen_info)
- {
- if (IsEventHandler)
- return;
-
- string ns = container_type.NS;
-
- StreamWriter sw = gen_info.OpenStream (EventHandlerName);
-
- sw.WriteLine ("namespace " + ns + " {");
- sw.WriteLine ();
- sw.WriteLine ("\tusing System;");
-
- sw.WriteLine ();
- sw.WriteLine ("\tpublic delegate void " + EventHandlerName + "(object o, " + EventArgsName + " args);");
- sw.WriteLine ();
- sw.WriteLine ("\tpublic class " + EventArgsName + " : GLib.SignalArgs {");
- for (int i = 0; i < parms.Count; i++) {
- sw.WriteLine ("\t\tpublic " + parms[i].CSType + " " + parms[i].StudlyName + "{");
- if (parms[i].PassAs != "out") {
- sw.WriteLine ("\t\t\tget {");
- if (SymbolTable.Table.IsInterface (parms [i].CType))
- sw.WriteLine ("\t\t\t\treturn {0}Adapter.GetObject (Args [{1}] as GLib.Object);", parms [i].CSType, i);
- else
- sw.WriteLine ("\t\t\t\treturn ({0}) Args [{1}];", parms [i].CSType, i);
- sw.WriteLine ("\t\t\t}");
- }
- if (parms[i].PassAs != "") {
- sw.WriteLine ("\t\t\tset {");
- if (SymbolTable.Table.IsInterface (parms [i].CType))
- sw.WriteLine ("\t\t\t\tArgs [{0}] = value is {1}Adapter ? (value as {1}Adapter).Implementor : value;", i, parms [i].CSType);
- else
- sw.WriteLine ("\t\t\t\tArgs[" + i + "] = (" + parms[i].CSType + ")value;");
- sw.WriteLine ("\t\t\t}");
- }
- sw.WriteLine ("\t\t}");
- sw.WriteLine ();
- }
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
- sw.Close ();
- }
-
- public void GenEvent (StreamWriter sw, ObjectBase implementor, string target)
- {
- string args_type = IsEventHandler ? "" : ", typeof (" + EventArgsQualifiedName + ")";
-
- if (Marshaled) {
- GenCallback (sw);
- args_type = ", new " + DelegateName + "(" + CallbackName + ")";
- }
-
- sw.WriteLine("\t\t[GLib.Signal("+ CName + ")]");
- sw.Write("\t\tpublic ");
- if (NeedNew (implementor))
- sw.Write("new ");
- sw.WriteLine("event " + EventHandlerQualifiedName + " " + Name + " {");
- sw.WriteLine("\t\t\tadd {");
- sw.WriteLine("\t\t\t\t{0}.AddSignalHandler ({1}, value{2});", target, CName, args_type);
- sw.WriteLine("\t\t\t}");
- sw.WriteLine("\t\t\tremove {");
- sw.WriteLine("\t\t\t\t{0}.RemoveSignalHandler ({1}, value);", target, CName);
- sw.WriteLine("\t\t\t}");
- sw.WriteLine("\t\t}");
- sw.WriteLine();
- }
-
- public void Generate (GenerationInfo gen_info, ObjectBase implementor)
- {
- StreamWriter sw = gen_info.Writer;
-
- if (implementor == null)
- GenEventHandler (gen_info);
-
- GenEvent (sw, implementor, "this");
-
- Statistics.SignalCount++;
- }
- }
-}
-
+// GtkSharp.Generation.Signal.cs - The Signal Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2005 Novell, Inc. +// Copyright (c) 2007 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + using System.IO; + using System.Xml; + + public class Signal { + + bool marshaled; + string name; + XmlElement elem; + ReturnValue retval; + Parameters parms; + ObjectBase container_type; + + public Signal (XmlElement elem, ObjectBase container_type) + { + this.elem = elem; + name = elem.GetAttribute ("name"); + marshaled = elem.GetAttribute ("manual") == "true"; + retval = new ReturnValue (elem ["return-type"]); + parms = new Parameters (elem["parameters"], container_type.ParserVersion == 1 ? true : false); + this.container_type = container_type; + } + + bool Marshaled { + get { return marshaled; } + } + + public string Name { + get { + return name; + } + set { + name = value; + } + } + + public bool Validate (LogWriter log) + { + log.Member = Name; + if (Name == "") { + log.Warn ("Nameless signal found. Add name attribute with fixup."); + Statistics.ThrottledCount++; + return false; + } else if (!parms.Validate (log) || !retval.Validate (log)) { + Statistics.ThrottledCount++; + return false; + } + return true; + } + + public void GenerateDecl (StreamWriter sw) + { + if (elem.GetAttributeAsBoolean ("new_flag") || (container_type != null && container_type.GetSignalRecursively (Name) != null)) + sw.Write("new "); + + sw.WriteLine ("\t\tevent " + EventHandlerQualifiedName + " " + Name + ";"); + } + + public string CName { + get { + return "\"" + elem.GetAttribute("cname") + "\""; + } + } + + string CallbackSig { + get { + string result = ""; + for (int i = 0; i < parms.Count; i++) { + if (i > 0) + result += ", "; + + Parameter p = parms [i]; + if (p.PassAs != "" && !(p.Generatable is StructBase)) + result += p.PassAs + " "; + result += (p.MarshalType + " arg" + i); + } + + return result; + } + } + + string CallbackName { + get { return Name + "SignalCallback"; } + } + + string DelegateName { + get { return Name + "SignalDelegate"; } + } + + private string EventArgsName { + get { + if (IsEventHandler) + return "EventArgs"; + else + return Name + "Args"; + } + } + + private string EventArgsQualifiedName { + get { + if (IsEventHandler) + return "System.EventArgs"; + else + return container_type.NS + "." + Name + "Args"; + } + } + + private string EventHandlerName { + get { + if (IsEventHandler) + return "EventHandler"; + else if (SymbolTable.Table [container_type.NS + Name + "Handler"] != null) + return Name + "EventHandler"; + else + return Name + "Handler"; + } + } + + private string EventHandlerQualifiedName { + get { + if (IsEventHandler) + return "System.EventHandler"; + else + return container_type.NS + "." + EventHandlerName; + } + } + + private bool IsEventHandler { + get { + return retval.CSType == "void" && parms.Count == 0; + } + } + + public string GenArgsInitialization (StreamWriter sw) + { + if (parms.Count > 0) + sw.WriteLine("\t\t\t\targs.Args = new object[" + parms.Count + "];"); + string finish = ""; + for (int idx = 0; idx < parms.Count; idx++) { + Parameter p = parms [idx]; + IGeneratable igen = p.Generatable; + if (p.PassAs != "out") { + if (igen is ManualGen) { + sw.WriteLine("\t\t\t\tif (arg{0} == IntPtr.Zero)", idx); + sw.WriteLine("\t\t\t\t\targs.Args[{0}] = null;", idx); + sw.WriteLine("\t\t\t\telse {"); + sw.WriteLine("\t\t\t\t\targs.Args[" + idx + "] = " + p.FromNative ("arg" + idx) + ";"); + sw.WriteLine("\t\t\t\t}"); + } else + sw.WriteLine("\t\t\t\targs.Args[" + idx + "] = " + p.FromNative ("arg" + idx) + ";"); + } + if ((igen is StructBase || igen is ByRefGen) && p.PassAs != "") + finish += "\t\t\t\tif (arg" + idx + " != IntPtr.Zero) System.Runtime.InteropServices.Marshal.StructureToPtr (args.Args[" + idx + "], arg" + idx + ", false);\n"; + else if (igen is IManualMarshaler && p.PassAs != "") + finish += String.Format ("\t\t\t\targ{0} = {1};\n", idx, (igen as IManualMarshaler).AllocNative ("args.Args[" + idx + "]")); + else if (p.PassAs != "") + finish += "\t\t\t\targ" + idx + " = " + igen.CallByName ("((" + p.CSType + ")args.Args[" + idx + "])") + ";\n"; + } + return finish; + } + + public void GenArgsCleanup (StreamWriter sw, string finish) + { + if (retval.IsVoid && finish.Length == 0) + return; + + sw.WriteLine("\n\t\t\ttry {"); + sw.Write (finish); + if (!retval.IsVoid) { + if (retval.CSType == "bool") { + sw.WriteLine ("\t\t\t\tif (args.RetVal == null)"); + sw.WriteLine ("\t\t\t\t\treturn false;"); + } + sw.WriteLine ("\t\t\t\treturn {0};", retval.ToNative (String.Format ("(({0}) args.RetVal)", retval.CSType))); + } + sw.WriteLine("\t\t\t} catch (Exception) {"); + sw.WriteLine ("\t\t\t\tException ex = new Exception (\"args.RetVal or 'out' property unset or set to incorrect type in " + EventHandlerQualifiedName + " callback\");"); + sw.WriteLine("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (ex, true);"); + + sw.WriteLine ("\t\t\t\t// NOTREACHED: above call doesn't return."); + sw.WriteLine ("\t\t\t\tthrow ex;"); + sw.WriteLine("\t\t\t}"); + } + + public void GenCallback (StreamWriter sw) + { + if (IsEventHandler) + return; + + string native_signature = "IntPtr inst"; + if (parms.Count > 0) + native_signature += ", " + CallbackSig; + native_signature += ", IntPtr gch"; + + sw.WriteLine ("\t\t[UnmanagedFunctionPointer (CallingConvention.Cdecl)]"); + sw.WriteLine ("\t\tdelegate {0} {1} ({2});", retval.ToNativeType, DelegateName, native_signature); + sw.WriteLine (); + sw.WriteLine ("\t\tstatic {0} {1} ({2})", retval.ToNativeType, CallbackName, native_signature); + sw.WriteLine("\t\t{"); + sw.WriteLine("\t\t\t{0} args = new {0} ();", EventArgsQualifiedName); + sw.WriteLine("\t\t\ttry {"); + sw.WriteLine("\t\t\t\tGLib.Signal sig = ((GCHandle) gch).Target as GLib.Signal;"); + sw.WriteLine("\t\t\t\tif (sig == null)"); + sw.WriteLine("\t\t\t\t\tthrow new Exception(\"Unknown signal GC handle received \" + gch);"); + sw.WriteLine(); + string finish = GenArgsInitialization (sw); + sw.WriteLine("\t\t\t\t{0} handler = ({0}) sig.Handler;", EventHandlerQualifiedName); + sw.WriteLine("\t\t\t\thandler (GLib.Object.GetObject (inst), args);"); + sw.WriteLine("\t\t\t} catch (Exception e) {"); + sw.WriteLine("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (e, false);"); + sw.WriteLine("\t\t\t}"); + GenArgsCleanup (sw, finish); + sw.WriteLine("\t\t}"); + sw.WriteLine(); + } + + private bool NeedNew (ObjectBase implementor) + { + return elem.GetAttributeAsBoolean ("new_flag") || + (container_type != null && container_type.GetSignalRecursively (Name) != null) || + (implementor != null && implementor.GetSignalRecursively (Name) != null); + } + + public void GenEventHandler (GenerationInfo gen_info) + { + if (IsEventHandler) + return; + + string ns = container_type.NS; + + StreamWriter sw = gen_info.OpenStream (EventHandlerName); + + sw.WriteLine ("namespace " + ns + " {"); + sw.WriteLine (); + sw.WriteLine ("\tusing System;"); + + sw.WriteLine (); + sw.WriteLine ("\tpublic delegate void " + EventHandlerName + "(object o, " + EventArgsName + " args);"); + sw.WriteLine (); + sw.WriteLine ("\tpublic class " + EventArgsName + " : GLib.SignalArgs {"); + for (int i = 0; i < parms.Count; i++) { + sw.WriteLine ("\t\tpublic " + parms[i].CSType + " " + parms[i].StudlyName + "{"); + if (parms[i].PassAs != "out") { + sw.WriteLine ("\t\t\tget {"); + if (SymbolTable.Table.IsInterface (parms [i].CType)) + sw.WriteLine ("\t\t\t\treturn {0}Adapter.GetObject (Args [{1}] as GLib.Object);", parms [i].CSType, i); + else + sw.WriteLine ("\t\t\t\treturn ({0}) Args [{1}];", parms [i].CSType, i); + sw.WriteLine ("\t\t\t}"); + } + if (parms[i].PassAs != "") { + sw.WriteLine ("\t\t\tset {"); + if (SymbolTable.Table.IsInterface (parms [i].CType)) + sw.WriteLine ("\t\t\t\tArgs [{0}] = value is {1}Adapter ? (value as {1}Adapter).Implementor : value;", i, parms [i].CSType); + else + sw.WriteLine ("\t\t\t\tArgs[" + i + "] = (" + parms[i].CSType + ")value;"); + sw.WriteLine ("\t\t\t}"); + } + sw.WriteLine ("\t\t}"); + sw.WriteLine (); + } + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + sw.Close (); + } + + public void GenEvent (StreamWriter sw, ObjectBase implementor, string target) + { + string args_type = IsEventHandler ? "" : ", typeof (" + EventArgsQualifiedName + ")"; + + if (Marshaled) { + GenCallback (sw); + args_type = ", new " + DelegateName + "(" + CallbackName + ")"; + } + + sw.WriteLine("\t\t[GLib.Signal("+ CName + ")]"); + sw.Write("\t\tpublic "); + if (NeedNew (implementor)) + sw.Write("new "); + sw.WriteLine("event " + EventHandlerQualifiedName + " " + Name + " {"); + sw.WriteLine("\t\t\tadd {"); + sw.WriteLine("\t\t\t\t{0}.AddSignalHandler ({1}, value{2});", target, CName, args_type); + sw.WriteLine("\t\t\t}"); + sw.WriteLine("\t\t\tremove {"); + sw.WriteLine("\t\t\t\t{0}.RemoveSignalHandler ({1}, value);", target, CName); + sw.WriteLine("\t\t\t}"); + sw.WriteLine("\t\t}"); + sw.WriteLine(); + } + + public void Generate (GenerationInfo gen_info, ObjectBase implementor) + { + StreamWriter sw = gen_info.Writer; + + if (implementor == null) + GenEventHandler (gen_info); + + GenEvent (sw, implementor, "this"); + + Statistics.SignalCount++; + } + } +} + diff --git a/generator/Signature.cs b/generator/Signature.cs index 1b01234..80808dd 100644 --- a/generator/Signature.cs +++ b/generator/Signature.cs @@ -1,123 +1,123 @@ -// GtkSharp.Generation.Signature.cs - The Signature Generation Class.
-//
-// Author: Mike Kestner <mkestner@ximian.com>
-//
-// Copyright (c) 2003-2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.Xml;
-
- public class Signature {
-
- private ArrayList parms = new ArrayList ();
-
- public Signature (Parameters parms)
- {
- foreach (Parameter p in parms) {
- if (!parms.IsHidden (p))
- this.parms.Add (p);
- }
- }
-
- public override string ToString ()
- {
- if (parms.Count == 0)
- return "";
-
- string[] result = new string [parms.Count];
- int i = 0;
-
- foreach (Parameter p in parms) {
- result [i] = p.PassAs != "" ? p.PassAs + " " : "";
- result [i++] += p.CSType + " " + p.Name;
- }
-
- return String.Join (", ", result);
- }
-
- public string Types {
- get {
- if (parms.Count == 0)
- return "";
-
- string[] result = new string [parms.Count];
- int i = 0;
-
- foreach (Parameter p in parms)
- result [i++] = p.CSType;
-
- return String.Join (":", result);
- }
- }
-
- public bool IsAccessor {
- get {
- int count = 0;
- foreach (Parameter p in parms) {
- if (p.PassAs == "out")
- count++;
-
- if (count > 1)
- return false;
- }
- return count == 1;
- }
- }
-
- public string AccessorType {
- get {
- foreach (Parameter p in parms)
- if (p.PassAs == "out")
- return p.CSType;
-
- return null;
- }
- }
-
- public string AccessorName {
- get {
- foreach (Parameter p in parms)
- if (p.PassAs == "out")
- return p.Name;
-
- return null;
- }
- }
-
- public string AsAccessor {
- get {
- string[] result = new string [parms.Count - 1];
- int i = 0;
-
- foreach (Parameter p in parms) {
- if (p.PassAs == "out")
- continue;
-
- result [i] = p.PassAs != "" ? p.PassAs + " " : "";
- result [i++] += p.CSType + " " + p.Name;
- }
-
- return String.Join (", ", result);
- }
- }
- }
-}
-
+// GtkSharp.Generation.Signature.cs - The Signature Generation Class. +// +// Author: Mike Kestner <mkestner@ximian.com> +// +// Copyright (c) 2003-2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.Xml; + + public class Signature { + + private IList<Parameter> parms = new List<Parameter> (); + + public Signature (Parameters parms) + { + foreach (Parameter p in parms) { + if (!parms.IsHidden (p)) + this.parms.Add (p); + } + } + + public override string ToString () + { + if (parms.Count == 0) + return ""; + + string[] result = new string [parms.Count]; + int i = 0; + + foreach (Parameter p in parms) { + result [i] = p.PassAs != "" ? p.PassAs + " " : ""; + result [i++] += p.CSType + " " + p.Name; + } + + return String.Join (", ", result); + } + + public string Types { + get { + if (parms.Count == 0) + return ""; + + string[] result = new string [parms.Count]; + int i = 0; + + foreach (Parameter p in parms) + result [i++] = p.CSType; + + return String.Join (":", result); + } + } + + public bool IsAccessor { + get { + int count = 0; + foreach (Parameter p in parms) { + if (p.PassAs == "out") + count++; + + if (count > 1) + return false; + } + return count == 1; + } + } + + public string AccessorType { + get { + foreach (Parameter p in parms) + if (p.PassAs == "out") + return p.CSType; + + return null; + } + } + + public string AccessorName { + get { + foreach (Parameter p in parms) + if (p.PassAs == "out") + return p.Name; + + return null; + } + } + + public string AsAccessor { + get { + string[] result = new string [parms.Count - 1]; + int i = 0; + + foreach (Parameter p in parms) { + if (p.PassAs == "out") + continue; + + result [i] = p.PassAs != "" ? p.PassAs + " " : ""; + result [i++] += p.CSType + " " + p.Name; + } + + return String.Join (", ", result); + } + } + } +} + diff --git a/generator/SimpleBase.cs b/generator/SimpleBase.cs index 0a6f2b8..4547af2 100644 --- a/generator/SimpleBase.cs +++ b/generator/SimpleBase.cs @@ -1,99 +1,99 @@ -// GtkSharp.Generation.SimpleBase.cs - base class for marshaling non-generated types.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public abstract class SimpleBase : IGeneratable {
-
- string type;
- string ctype;
- string ns = String.Empty;
- string default_value = String.Empty;
-
- public SimpleBase (string ctype, string type, string default_value)
- {
- string[] toks = type.Split('.');
- this.ctype = ctype;
- this.type = toks[toks.Length - 1];
- if (toks.Length > 2)
- this.ns = String.Join (".", toks, 0, toks.Length - 1);
- else if (toks.Length == 2)
- this.ns = toks[0];
- this.default_value = default_value;
- }
-
- public string CName {
- get {
- return ctype;
- }
- }
-
- public string Name {
- get {
- return type;
- }
- }
-
- public string QualifiedName {
- get {
- return ns == String.Empty ? type : ns + "." + type;
- }
- }
-
- public virtual string MarshalType {
- get {
- return QualifiedName;
- }
- }
-
- public virtual string DefaultValue {
- get {
- return default_value;
- }
- }
-
- public virtual string CallByName (string var)
- {
- return var;
- }
-
- public virtual string FromNative(string var)
- {
- return var;
- }
-
- public bool Validate ()
- {
- return true;
- }
-
- public void Generate ()
- {
- }
-
- public void Generate (GenerationInfo gen_info)
- {
- }
- }
-}
-
+// GtkSharp.Generation.SimpleBase.cs - base class for marshaling non-generated types. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public abstract class SimpleBase : IGeneratable { + + string type; + string ctype; + string ns = String.Empty; + string default_value = String.Empty; + + public SimpleBase (string ctype, string type, string default_value) + { + string[] toks = type.Split('.'); + this.ctype = ctype; + this.type = toks[toks.Length - 1]; + if (toks.Length > 2) + this.ns = String.Join (".", toks, 0, toks.Length - 1); + else if (toks.Length == 2) + this.ns = toks[0]; + this.default_value = default_value; + } + + public string CName { + get { + return ctype; + } + } + + public string Name { + get { + return type; + } + } + + public string QualifiedName { + get { + return ns == String.Empty ? type : ns + "." + type; + } + } + + public virtual string MarshalType { + get { + return QualifiedName; + } + } + + public virtual string DefaultValue { + get { + return default_value; + } + } + + public virtual string CallByName (string var) + { + return var; + } + + public virtual string FromNative(string var) + { + return var; + } + + public bool Validate () + { + return true; + } + + public void Generate () + { + } + + public void Generate (GenerationInfo gen_info) + { + } + } +} + diff --git a/generator/SimpleGen.cs b/generator/SimpleGen.cs index b382135..14554ab 100644 --- a/generator/SimpleGen.cs +++ b/generator/SimpleGen.cs @@ -1,31 +1,31 @@ -// GtkSharp.Generation.SimpleGen.cs - The Simple type Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2003 Mike Kestner
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
-
- public class SimpleGen : SimpleBase {
- public SimpleGen (string ctype, string type, string default_value) : base (ctype, type, default_value) {}
-
- }
-}
-
+// GtkSharp.Generation.SimpleGen.cs - The Simple type Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2003 Mike Kestner +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + + public class SimpleGen : SimpleBase { + public SimpleGen (string ctype, string type, string default_value) : base (ctype, type, default_value) {} + + } +} + diff --git a/generator/Statistics.cs b/generator/Statistics.cs index 4545765..f634185 100644 --- a/generator/Statistics.cs +++ b/generator/Statistics.cs @@ -1,197 +1,197 @@ -// Statistics.cs : Generation statistics class implementation
-//
-// Author: Mike Kestner <mkestner@ximian.com>
-//
-// Copyright (c) 2002 Mike Kestner
-// Copyright (c) 2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
-
- public class Statistics {
-
- static int cbs = 0;
- static int enums = 0;
- static int objects = 0;
- static int structs = 0;
- static int boxed = 0;
- static int opaques = 0;
- static int interfaces = 0;
- static int methods = 0;
- static int ctors = 0;
- static int props = 0;
- static int sigs = 0;
- static int throttled = 0;
- static int ignored = 0;
- static bool vm_ignored = false;
-
- public static int CBCount {
- get {
- return cbs;
- }
- set {
- cbs = value;
- }
- }
-
- public static int EnumCount {
- get {
- return enums;
- }
- set {
- enums = value;
- }
- }
-
- public static int ObjectCount {
- get {
- return objects;
- }
- set {
- objects = value;
- }
- }
-
- public static int StructCount {
- get {
- return structs;
- }
- set {
- structs = value;
- }
- }
-
- public static int BoxedCount {
- get {
- return boxed;
- }
- set {
- boxed = value;
- }
- }
-
- public static int OpaqueCount {
- get {
- return opaques;
- }
- set {
- opaques = value;
- }
- }
-
- public static int CtorCount {
- get {
- return ctors;
- }
- set {
- ctors = value;
- }
- }
-
- public static int MethodCount {
- get {
- return methods;
- }
- set {
- methods = value;
- }
- }
-
- public static int PropCount {
- get {
- return props;
- }
- set {
- props = value;
- }
- }
-
- public static int SignalCount {
- get {
- return sigs;
- }
- set {
- sigs = value;
- }
- }
-
- public static int IFaceCount {
- get {
- return interfaces;
- }
- set {
- interfaces = value;
- }
- }
-
- public static int ThrottledCount {
- get {
- return throttled;
- }
- set {
- throttled = value;
- }
- }
-
- public static int IgnoreCount {
- get {
- return ignored;
- }
- set {
- ignored = value;
- }
- }
-
- public static bool VMIgnored {
- get {
- return vm_ignored;
- }
- set {
- if (value)
- vm_ignored = value;
- }
- }
-
- public static void Report()
- {
- if (VMIgnored) {
- Console.WriteLine();
- Console.WriteLine("Warning: Generation throttled for Virtual Methods.");
- Console.WriteLine(" Consider regenerating with --gluelib-name and --glue-filename.");
- }
- Console.WriteLine();
- Console.WriteLine("Generation Summary:");
- Console.Write(" Enums: " + enums);
- Console.Write(" Structs: " + structs);
- Console.Write(" Boxed: " + boxed);
- Console.Write(" Opaques: " + opaques);
- Console.Write(" Interfaces: " + interfaces);
- Console.Write(" Objects: " + objects);
- Console.WriteLine(" Callbacks: " + cbs);
- Console.Write(" Properties: " + props);
- Console.Write(" Signals: " + sigs);
- Console.Write(" Methods: " + methods);
- Console.Write(" Constructors: " + ctors);
- Console.WriteLine(" Throttled: " + throttled);
- Console.WriteLine("Total Nodes: " + (enums+structs+boxed+opaques+interfaces+cbs+objects+props+sigs+methods+ctors+throttled));
- Console.WriteLine();
- }
- }
-}
+// Statistics.cs : Generation statistics class implementation +// +// Author: Mike Kestner <mkestner@ximian.com> +// +// Copyright (c) 2002 Mike Kestner +// Copyright (c) 2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections; + + public class Statistics { + + static int cbs = 0; + static int enums = 0; + static int objects = 0; + static int structs = 0; + static int boxed = 0; + static int opaques = 0; + static int interfaces = 0; + static int methods = 0; + static int ctors = 0; + static int props = 0; + static int sigs = 0; + static int throttled = 0; + static int ignored = 0; + static bool vm_ignored = false; + + public static int CBCount { + get { + return cbs; + } + set { + cbs = value; + } + } + + public static int EnumCount { + get { + return enums; + } + set { + enums = value; + } + } + + public static int ObjectCount { + get { + return objects; + } + set { + objects = value; + } + } + + public static int StructCount { + get { + return structs; + } + set { + structs = value; + } + } + + public static int BoxedCount { + get { + return boxed; + } + set { + boxed = value; + } + } + + public static int OpaqueCount { + get { + return opaques; + } + set { + opaques = value; + } + } + + public static int CtorCount { + get { + return ctors; + } + set { + ctors = value; + } + } + + public static int MethodCount { + get { + return methods; + } + set { + methods = value; + } + } + + public static int PropCount { + get { + return props; + } + set { + props = value; + } + } + + public static int SignalCount { + get { + return sigs; + } + set { + sigs = value; + } + } + + public static int IFaceCount { + get { + return interfaces; + } + set { + interfaces = value; + } + } + + public static int ThrottledCount { + get { + return throttled; + } + set { + throttled = value; + } + } + + public static int IgnoreCount { + get { + return ignored; + } + set { + ignored = value; + } + } + + public static bool VMIgnored { + get { + return vm_ignored; + } + set { + if (value) + vm_ignored = value; + } + } + + public static void Report() + { + if (VMIgnored) { + Console.WriteLine(); + Console.WriteLine("Warning: Generation throttled for Virtual Methods."); + Console.WriteLine(" Consider regenerating with --gluelib-name and --glue-filename."); + } + Console.WriteLine(); + Console.WriteLine("Generation Summary:"); + Console.Write(" Enums: " + enums); + Console.Write(" Structs: " + structs); + Console.Write(" Boxed: " + boxed); + Console.Write(" Opaques: " + opaques); + Console.Write(" Interfaces: " + interfaces); + Console.Write(" Objects: " + objects); + Console.WriteLine(" Callbacks: " + cbs); + Console.Write(" Properties: " + props); + Console.Write(" Signals: " + sigs); + Console.Write(" Methods: " + methods); + Console.Write(" Constructors: " + ctors); + Console.WriteLine(" Throttled: " + throttled); + Console.WriteLine("Total Nodes: " + (enums+structs+boxed+opaques+interfaces+cbs+objects+props+sigs+methods+ctors+throttled)); + Console.WriteLine(); + } + } +} diff --git a/generator/StructBase.cs b/generator/StructBase.cs index 9a0b380..63ace75 100644 --- a/generator/StructBase.cs +++ b/generator/StructBase.cs @@ -22,7 +22,7 @@ namespace GtkSharp.Generation { using System; - using System.Collections; + using System.Collections.Generic; using System.IO; using System.Text; using System.Text.RegularExpressions; @@ -30,7 +30,7 @@ namespace GtkSharp.Generation { public abstract class StructBase : ClassBase, IManualMarshaler { - new ArrayList fields = new ArrayList (); + IList<StructField> fields = new List<StructField> (); bool need_read_native = false; protected StructBase (XmlElement ns, XmlElement elem) : base (ns, elem) @@ -103,11 +103,11 @@ namespace GtkSharp.Generation { private bool DisableNew { get { - return Elem.HasAttribute ("disable_new"); + return Elem.GetAttributeAsBoolean ("disable_new"); } } - protected new void GenEqualsAndHash (StreamWriter sw) + protected void GenEqualsAndHash (StreamWriter sw) { int bitfields = 0; bool need_field = true; @@ -200,6 +200,7 @@ namespace GtkSharp.Generation { sw.WriteLine (); sw.WriteLine ("\tusing System;"); sw.WriteLine ("\tusing System.Collections;"); + sw.WriteLine ("\tusing System.Collections.Generic;"); sw.WriteLine ("\tusing System.Runtime.InteropServices;"); sw.WriteLine (); diff --git a/generator/StructField.cs b/generator/StructField.cs index 3fa6e80..7b62cab 100644 --- a/generator/StructField.cs +++ b/generator/StructField.cs @@ -73,7 +73,6 @@ namespace GtkSharp.Generation { public string EqualityName { get { SymbolTable table = SymbolTable.Table; - string wrapped = table.GetCSType (CType); string wrapped_name = SymbolTable.Table.MangleName (CName); IGeneratable gen = table [CType]; diff --git a/generator/StructGen.cs b/generator/StructGen.cs index e3da303..5276b26 100644 --- a/generator/StructGen.cs +++ b/generator/StructGen.cs @@ -1,52 +1,52 @@ -// GtkSharp.Generation.StructGen.cs - The Structure Generatable.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001 Mike Kestner
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.IO;
- using System.Xml;
-
- public class StructGen : StructBase {
-
- public StructGen (XmlElement ns, XmlElement elem) : base (ns, elem) {}
-
- public override void Generate (GenerationInfo gen_info)
- {
- gen_info.CurrentType = QualifiedName;
-
- StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
- base.Generate (gen_info);
- if (GetMethod ("GetType") == null && GetMethod ("GetGType") == null) {
- sw.WriteLine ("\t\tprivate static GLib.GType GType {");
- sw.WriteLine ("\t\t\tget { return GLib.GType.Pointer; }");
- sw.WriteLine ("\t\t}");
- }
- sw.WriteLine ("#endregion");
- sw.WriteLine ("\t}");
- sw.WriteLine ("}");
- sw.Close ();
- gen_info.Writer = null;
- Statistics.StructCount++;
- }
- }
-}
-
+// GtkSharp.Generation.StructGen.cs - The Structure Generatable. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001 Mike Kestner +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.IO; + using System.Xml; + + public class StructGen : StructBase { + + public StructGen (XmlElement ns, XmlElement elem) : base (ns, elem) {} + + public override void Generate (GenerationInfo gen_info) + { + gen_info.CurrentType = QualifiedName; + + StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name); + base.Generate (gen_info); + if (GetMethod ("GetType") == null && GetMethod ("GetGType") == null) { + sw.WriteLine ("\t\tprivate static GLib.GType GType {"); + sw.WriteLine ("\t\t\tget { return GLib.GType.Pointer; }"); + sw.WriteLine ("\t\t}"); + } + sw.WriteLine ("#endregion"); + sw.WriteLine ("\t}"); + sw.WriteLine ("}"); + sw.Close (); + gen_info.Writer = null; + Statistics.StructCount++; + } + } +} + diff --git a/generator/SymbolTable.cs b/generator/SymbolTable.cs index 7d0ebe4..dca21eb 100644 --- a/generator/SymbolTable.cs +++ b/generator/SymbolTable.cs @@ -1,388 +1,389 @@ -// GtkSharp.Generation.SymbolTable.cs - The Symbol Table Class.
-//
-// Author: Mike Kestner <mkestner@novell.com>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2004-2005 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
-
- public class SymbolTable {
-
- static SymbolTable table = null;
-
- Hashtable types = new Hashtable ();
-
- public static SymbolTable Table {
- get {
- if (table == null)
- table = new SymbolTable ();
-
- return table;
- }
- }
-
- public SymbolTable ()
- {
- // Simple easily mapped types
- AddType (new SimpleGen ("void", "void", String.Empty));
- AddType (new SimpleGen ("gpointer", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("AtkFunction", "IntPtr", "IntPtr.Zero")); // function definition used for padding
- AddType (new SimpleGen ("gboolean", "bool", "false"));
- AddType (new SimpleGen ("gint", "int", "0"));
- AddType (new SimpleGen ("guint", "uint", "0"));
- AddType (new SimpleGen ("int", "int", "0"));
- AddType (new SimpleGen ("unsigned", "uint", "0"));
- AddType (new SimpleGen ("unsigned int", "uint", "0"));
- AddType (new SimpleGen ("unsigned-int", "uint", "0"));
- AddType (new SimpleGen ("gshort", "short", "0"));
- AddType (new SimpleGen ("gushort", "ushort", "0"));
- AddType (new SimpleGen ("short", "short", "0"));
- AddType (new SimpleGen ("guchar", "byte", "0"));
- AddType (new SimpleGen ("unsigned char", "byte", "0"));
- AddType (new SimpleGen ("unsigned-char", "byte", "0"));
- AddType (new SimpleGen ("guint1", "bool", "false"));
- AddType (new SimpleGen ("uint1", "bool", "false"));
- AddType (new SimpleGen ("gint8", "sbyte", "0"));
- AddType (new SimpleGen ("guint8", "byte", "0"));
- AddType (new SimpleGen ("gint16", "short", "0"));
- AddType (new SimpleGen ("guint16", "ushort", "0"));
- AddType (new SimpleGen ("gint32", "int", "0"));
- AddType (new SimpleGen ("guint32", "uint", "0"));
- AddType (new SimpleGen ("gint64", "long", "0"));
- AddType (new SimpleGen ("guint64", "ulong", "0"));
- AddType (new SimpleGen ("long long", "long", "0"));
- AddType (new SimpleGen ("gfloat", "float", "0.0"));
- AddType (new SimpleGen ("float", "float", "0.0"));
- AddType (new SimpleGen ("gdouble", "double", "0.0"));
- AddType (new SimpleGen ("double", "double", "0.0"));
- AddType (new SimpleGen ("goffset", "long", "0"));
- AddType (new SimpleGen ("GQuark", "int", "0"));
-
- // platform specific integer types.
-#if WIN64LONGS
- AddType (new SimpleGen ("long", "int", "0"));
- AddType (new SimpleGen ("glong", "int", "0"));
- AddType (new SimpleGen ("ulong", "uint", "0"));
- AddType (new SimpleGen ("gulong", "uint", "0"));
- AddType (new SimpleGen ("unsigned long", "uint", "0"));
- AddType (new SimpleGen ("gintptr", "int", "0"));
- AddType (new SimpleGen ("guintptr", "uint", "0"));
-#else
- AddType (new LPGen ("long"));
- AddType (new LPGen ("glong"));
- AddType (new LPGen ("gintptr"));
- AddType (new LPUGen ("ulong"));
- AddType (new LPUGen ("gulong"));
- AddType (new LPUGen ("unsigned long"));
- AddType (new LPUGen ("guintptr"));
-#endif
-
- AddType (new LPGen ("ssize_t"));
- AddType (new LPGen ("gssize"));
- AddType (new LPUGen ("size_t"));
- AddType (new LPUGen ("gsize"));
-
-#if OFF_T_8
- AddType (new AliasGen ("off_t", "long"));
-#else
- AddType (new LPGen ("off_t"));
-#endif
-
- // string types
- AddType (new ConstStringGen ("const-gchar"));
- AddType (new ConstStringGen ("const-xmlChar"));
- AddType (new ConstStringGen ("const-char"));
- AddType (new ConstFilenameGen ("const-gfilename"));
- AddType (new MarshalGen ("gfilename", "string", "IntPtr", "GLib.Marshaller.StringToFilenamePtr({0})", "GLib.Marshaller.FilenamePtrToStringGFree({0})"));
- AddType (new MarshalGen ("gchar", "string", "IntPtr", "GLib.Marshaller.StringToPtrGStrdup({0})", "GLib.Marshaller.PtrToStringGFree({0})"));
- AddType (new MarshalGen ("char", "string", "IntPtr", "GLib.Marshaller.StringToPtrGStrdup({0})", "GLib.Marshaller.PtrToStringGFree({0})"));
- AddType (new SimpleGen ("GStrv", "string[]", "null"));
-
- // manually wrapped types requiring more complex marshaling
- AddType (new ManualGen ("GInitiallyUnowned", "GLib.InitiallyUnowned", "GLib.Object.GetObject ({0})"));
- AddType (new ManualGen ("GObject", "GLib.Object", "GLib.Object.GetObject ({0})"));
- AddType (new ManualGen ("GList", "GLib.List"));
- AddType (new ManualGen ("GPtrArray", "GLib.PtrArray"));
- AddType (new ManualGen ("GSList", "GLib.SList"));
- AddType (new ManualGen ("GVariant", "GLib.Variant"));
- AddType (new ManualGen ("GVariantType", "GLib.VariantType"));
- AddType (new ManualGen ("GValueArray", "GLib.ValueArray"));
- AddType (new MarshalGen ("gunichar", "char", "uint", "GLib.Marshaller.CharToGUnichar ({0})", "GLib.Marshaller.GUnicharToChar ({0})"));
- AddType (new MarshalGen ("time_t", "System.DateTime", "IntPtr", "GLib.Marshaller.DateTimeTotime_t ({0})", "GLib.Marshaller.time_tToDateTime ({0})"));
- AddType (new MarshalGen ("GString", "string", "IntPtr", "new GLib.GString ({0}).Handle", "GLib.GString.PtrToString ({0})"));
- AddType (new MarshalGen ("GType", "GLib.GType", "IntPtr", "{0}.Val", "new GLib.GType({0})", "GLib.GType.None"));
- AddType (new ByRefGen ("GValue", "GLib.Value"));
- AddType (new SimpleGen ("GDestroyNotify", "GLib.DestroyNotify", "null"));
-
- // FIXME: These ought to be handled properly.
- AddType (new SimpleGen ("GC", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GError", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GMemChunk", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GTimeVal", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GClosure", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GArray", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GByteArray", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GData", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GIOChannel", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GTypeModule", "GLib.Object", "null"));
- AddType (new SimpleGen ("GHashTable", "System.IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("va_list", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("GParamSpec", "IntPtr", "IntPtr.Zero"));
- AddType (new SimpleGen ("gconstpointer", "IntPtr", "IntPtr.Zero"));
- }
-
- public void AddType (IGeneratable gen)
- {
- types [gen.CName] = gen;
- }
-
- public void AddTypes (IGeneratable[] gens)
- {
- foreach (IGeneratable gen in gens)
- types [gen.CName] = gen;
- }
-
- public int Count {
- get
- {
- return types.Count;
- }
- }
-
- public IEnumerable Generatables {
- get {
- return types.Values;
- }
- }
-
- public IGeneratable this [string ctype] {
- get {
- return DeAlias (ctype) as IGeneratable;
- }
- }
-
- private bool IsConstString (string type)
- {
- switch (type) {
- case "const-gchar":
- case "const-char":
- case "const-xmlChar":
- case "const-gfilename":
- return true;
- default:
- return false;
- }
- }
-
- private string Trim(string type)
- {
- // HACK: If we don't detect this here, there is no
- // way of indicating it in the symbol table
- if (type == "void*" || type == "const-void*") return "gpointer";
-
- string trim_type = type.TrimEnd('*');
-
- if (IsConstString (trim_type))
- return trim_type;
-
- if (trim_type.StartsWith("const-")) return trim_type.Substring(6);
- return trim_type;
- }
-
- private object DeAlias (string type)
- {
- type = Trim (type);
- while (types [type] is AliasGen) {
- IGeneratable igen = types [type] as AliasGen;
- types [type] = types [igen.Name];
- type = igen.Name;
- }
-
- return types [type];
- }
-
- public string FromNative(string c_type, string val)
- {
- IGeneratable gen = this[c_type];
- if (gen == null)
- return "";
- return gen.FromNative (val);
- }
-
- public string GetCSType(string c_type)
- {
- IGeneratable gen = this[c_type];
- if (gen == null)
- return "";
- return gen.QualifiedName;
- }
-
- public string GetName(string c_type)
- {
- IGeneratable gen = this[c_type];
- if (gen == null)
- return "";
- return gen.Name;
- }
-
- public string GetMarshalType(string c_type)
- {
- IGeneratable gen = this[c_type];
- if (gen == null)
- return "";
- return gen.MarshalType;
- }
-
- public string CallByName(string c_type, string var_name)
- {
- IGeneratable gen = this[c_type];
- if (gen == null)
- return "";
- return gen.CallByName(var_name);
- }
-
- public bool IsOpaque(string c_type)
- {
- if (this[c_type] is OpaqueGen)
- return true;
-
- return false;
- }
-
- public bool IsBoxed(string c_type)
- {
- if (this[c_type] is BoxedGen)
- return true;
-
- return false;
- }
-
- public bool IsStruct(string c_type)
- {
- if (this[c_type] is StructGen)
- return true;
-
- return false;
- }
-
- public bool IsEnum(string c_type)
- {
- if (this[c_type] is EnumGen)
- return true;
-
- return false;
- }
-
- public bool IsEnumFlags(string c_type)
- {
- EnumGen gen = this [c_type] as EnumGen;
- return (gen != null && gen.Elem.GetAttribute ("type") == "flags");
- }
-
- public bool IsInterface(string c_type)
- {
- if (this[c_type] is InterfaceGen)
- return true;
-
- return false;
- }
-
- public ClassBase GetClassGen(string c_type)
- {
- return this[c_type] as ClassBase;
- }
-
- public bool IsObject(string c_type)
- {
- if (this[c_type] is ObjectGen)
- return true;
-
- return false;
- }
-
- public bool IsCallback(string c_type)
- {
- if (this[c_type] is CallbackGen)
- return true;
-
- return false;
- }
-
- public bool IsManuallyWrapped(string c_type)
- {
- if (this[c_type] is ManualGen)
- return true;
-
- return false;
- }
-
- public string MangleName(string name)
- {
- switch (name) {
- case "string":
- return "str1ng";
- case "event":
- return "evnt";
- case "null":
- return "is_null";
- case "object":
- return "objekt";
- case "params":
- return "parms";
- case "ref":
- return "reference";
- case "in":
- return "in_param";
- case "out":
- return "out_param";
- case "fixed":
- return "mfixed";
- case "byte":
- return "_byte";
- case "new":
- return "_new";
- case "base":
- return "_base";
- case "lock":
- return "_lock";
- case "callback":
- return "cb";
- case "readonly":
- return "read_only";
- case "interface":
- return "iface";
- case "internal":
- return "_internal";
- case "where":
- return "wh3r3";
- case "foreach":
- return "for_each";
- case "remove":
- return "_remove";
- default:
- break;
- }
-
- return name;
- }
- }
-}
+// GtkSharp.Generation.SymbolTable.cs - The Symbol Table Class. +// +// Author: Mike Kestner <mkestner@novell.com> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2004-2005 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + + public class SymbolTable { + + static SymbolTable table = null; + + IDictionary<string, IGeneratable> types = new Dictionary<string, IGeneratable> (); + + public static SymbolTable Table { + get { + if (table == null) + table = new SymbolTable (); + + return table; + } + } + + public SymbolTable () + { + // Simple easily mapped types + AddType (new SimpleGen ("void", "void", String.Empty)); + AddType (new SimpleGen ("gpointer", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("AtkFunction", "IntPtr", "IntPtr.Zero")); // function definition used for padding + AddType (new SimpleGen ("gboolean", "bool", "false")); + AddType (new SimpleGen ("gint", "int", "0")); + AddType (new SimpleGen ("guint", "uint", "0")); + AddType (new SimpleGen ("int", "int", "0")); + AddType (new SimpleGen ("unsigned", "uint", "0")); + AddType (new SimpleGen ("unsigned int", "uint", "0")); + AddType (new SimpleGen ("unsigned-int", "uint", "0")); + AddType (new SimpleGen ("gshort", "short", "0")); + AddType (new SimpleGen ("gushort", "ushort", "0")); + AddType (new SimpleGen ("short", "short", "0")); + AddType (new SimpleGen ("guchar", "byte", "0")); + AddType (new SimpleGen ("unsigned char", "byte", "0")); + AddType (new SimpleGen ("unsigned-char", "byte", "0")); + AddType (new SimpleGen ("guint1", "bool", "false")); + AddType (new SimpleGen ("uint1", "bool", "false")); + AddType (new SimpleGen ("gint8", "sbyte", "0")); + AddType (new SimpleGen ("guint8", "byte", "0")); + AddType (new SimpleGen ("gint16", "short", "0")); + AddType (new SimpleGen ("guint16", "ushort", "0")); + AddType (new SimpleGen ("gint32", "int", "0")); + AddType (new SimpleGen ("guint32", "uint", "0")); + AddType (new SimpleGen ("gint64", "long", "0")); + AddType (new SimpleGen ("guint64", "ulong", "0")); + AddType (new SimpleGen ("long long", "long", "0")); + AddType (new SimpleGen ("gfloat", "float", "0.0")); + AddType (new SimpleGen ("float", "float", "0.0")); + AddType (new SimpleGen ("gdouble", "double", "0.0")); + AddType (new SimpleGen ("double", "double", "0.0")); + AddType (new SimpleGen ("goffset", "long", "0")); + AddType (new SimpleGen ("GQuark", "int", "0")); + + // platform specific integer types. +#if WIN64LONGS + AddType (new SimpleGen ("long", "int", "0")); + AddType (new SimpleGen ("glong", "int", "0")); + AddType (new SimpleGen ("ulong", "uint", "0")); + AddType (new SimpleGen ("gulong", "uint", "0")); + AddType (new SimpleGen ("unsigned long", "uint", "0")); + AddType (new SimpleGen ("gintptr", "int", "0")); + AddType (new SimpleGen ("guintptr", "uint", "0")); +#else + AddType (new LPGen ("long")); + AddType (new LPGen ("glong")); + AddType (new LPGen ("gintptr")); + AddType (new LPUGen ("ulong")); + AddType (new LPUGen ("gulong")); + AddType (new LPUGen ("unsigned long")); + AddType (new LPUGen ("guintptr")); +#endif + + AddType (new LPGen ("ssize_t")); + AddType (new LPGen ("gssize")); + AddType (new LPUGen ("size_t")); + AddType (new LPUGen ("gsize")); + +#if OFF_T_8 + AddType (new AliasGen ("off_t", "long")); +#else + AddType (new LPGen ("off_t")); +#endif + + // string types + AddType (new ConstStringGen ("const-gchar")); + AddType (new ConstStringGen ("const-xmlChar")); + AddType (new ConstStringGen ("const-char")); + AddType (new ConstFilenameGen ("const-gfilename")); + AddType (new MarshalGen ("gfilename", "string", "IntPtr", "GLib.Marshaller.StringToFilenamePtr({0})", "GLib.Marshaller.FilenamePtrToStringGFree({0})")); + AddType (new MarshalGen ("gchar", "string", "IntPtr", "GLib.Marshaller.StringToPtrGStrdup({0})", "GLib.Marshaller.PtrToStringGFree({0})")); + AddType (new MarshalGen ("char", "string", "IntPtr", "GLib.Marshaller.StringToPtrGStrdup({0})", "GLib.Marshaller.PtrToStringGFree({0})")); + AddType (new SimpleGen ("GStrv", "string[]", "null")); + + // manually wrapped types requiring more complex marshaling + AddType (new ManualGen ("GInitiallyUnowned", "GLib.InitiallyUnowned", "GLib.Object.GetObject ({0})")); + AddType (new ManualGen ("GObject", "GLib.Object", "GLib.Object.GetObject ({0})")); + AddType (new ManualGen ("GList", "GLib.List")); + AddType (new ManualGen ("GPtrArray", "GLib.PtrArray")); + AddType (new ManualGen ("GSList", "GLib.SList")); + AddType (new ManualGen ("GVariant", "GLib.Variant")); + AddType (new ManualGen ("GVariantType", "GLib.VariantType")); + AddType (new ManualGen ("GValueArray", "GLib.ValueArray")); + AddType (new MarshalGen ("gunichar", "char", "uint", "GLib.Marshaller.CharToGUnichar ({0})", "GLib.Marshaller.GUnicharToChar ({0})")); + AddType (new MarshalGen ("time_t", "System.DateTime", "IntPtr", "GLib.Marshaller.DateTimeTotime_t ({0})", "GLib.Marshaller.time_tToDateTime ({0})")); + AddType (new MarshalGen ("GString", "string", "IntPtr", "new GLib.GString ({0}).Handle", "GLib.GString.PtrToString ({0})")); + AddType (new MarshalGen ("GType", "GLib.GType", "IntPtr", "{0}.Val", "new GLib.GType({0})", "GLib.GType.None")); + AddType (new ByRefGen ("GValue", "GLib.Value")); + AddType (new SimpleGen ("GDestroyNotify", "GLib.DestroyNotify", "null")); + + // FIXME: These ought to be handled properly. + AddType (new SimpleGen ("GC", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GError", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GMemChunk", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GTimeVal", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GClosure", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GArray", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GByteArray", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GData", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GIOChannel", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GTypeModule", "GLib.Object", "null")); + AddType (new SimpleGen ("GHashTable", "System.IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("va_list", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("GParamSpec", "IntPtr", "IntPtr.Zero")); + AddType (new SimpleGen ("gconstpointer", "IntPtr", "IntPtr.Zero")); + } + + public void AddType (IGeneratable gen) + { + types [gen.CName] = gen; + } + + public void AddTypes (IGeneratable[] gens) + { + foreach (IGeneratable gen in gens) + types [gen.CName] = gen; + } + + public int Count { + get + { + return types.Count; + } + } + + public IEnumerable<IGeneratable> Generatables { + get { + return types.Values; + } + } + + public IGeneratable this [string ctype] { + get { + return DeAlias (ctype); + } + } + + private bool IsConstString (string type) + { + switch (type) { + case "const-gchar": + case "const-char": + case "const-xmlChar": + case "const-gfilename": + return true; + default: + return false; + } + } + + private string Trim(string type) + { + // HACK: If we don't detect this here, there is no + // way of indicating it in the symbol table + if (type == "void*" || type == "const-void*") return "gpointer"; + + string trim_type = type.TrimEnd('*'); + + if (IsConstString (trim_type)) + return trim_type; + + if (trim_type.StartsWith("const-")) return trim_type.Substring(6); + return trim_type; + } + + private IGeneratable DeAlias (string type) + { + type = Trim (type); + IGeneratable cur_type = null; + while (types.TryGetValue (type, out cur_type) && cur_type is AliasGen) { + IGeneratable igen = types [type] as AliasGen; + types [type] = types [igen.Name]; + type = igen.Name; + } + + return cur_type; + } + + public string FromNative(string c_type, string val) + { + IGeneratable gen = this[c_type]; + if (gen == null) + return ""; + return gen.FromNative (val); + } + + public string GetCSType(string c_type) + { + IGeneratable gen = this[c_type]; + if (gen == null) + return ""; + return gen.QualifiedName; + } + + public string GetName(string c_type) + { + IGeneratable gen = this[c_type]; + if (gen == null) + return ""; + return gen.Name; + } + + public string GetMarshalType(string c_type) + { + IGeneratable gen = this[c_type]; + if (gen == null) + return ""; + return gen.MarshalType; + } + + public string CallByName(string c_type, string var_name) + { + IGeneratable gen = this[c_type]; + if (gen == null) + return ""; + return gen.CallByName(var_name); + } + + public bool IsOpaque(string c_type) + { + if (this[c_type] is OpaqueGen) + return true; + + return false; + } + + public bool IsBoxed(string c_type) + { + if (this[c_type] is BoxedGen) + return true; + + return false; + } + + public bool IsStruct(string c_type) + { + if (this[c_type] is StructGen) + return true; + + return false; + } + + public bool IsEnum(string c_type) + { + if (this[c_type] is EnumGen) + return true; + + return false; + } + + public bool IsEnumFlags(string c_type) + { + EnumGen gen = this [c_type] as EnumGen; + return (gen != null && gen.Elem.GetAttribute ("type") == "flags"); + } + + public bool IsInterface(string c_type) + { + if (this[c_type] is InterfaceGen) + return true; + + return false; + } + + public ClassBase GetClassGen(string c_type) + { + return this[c_type] as ClassBase; + } + + public bool IsObject(string c_type) + { + if (this[c_type] is ObjectGen) + return true; + + return false; + } + + public bool IsCallback(string c_type) + { + if (this[c_type] is CallbackGen) + return true; + + return false; + } + + public bool IsManuallyWrapped(string c_type) + { + if (this[c_type] is ManualGen) + return true; + + return false; + } + + public string MangleName(string name) + { + switch (name) { + case "string": + return "str1ng"; + case "event": + return "evnt"; + case "null": + return "is_null"; + case "object": + return "objekt"; + case "params": + return "parms"; + case "ref": + return "reference"; + case "in": + return "in_param"; + case "out": + return "out_param"; + case "fixed": + return "mfixed"; + case "byte": + return "_byte"; + case "new": + return "_new"; + case "base": + return "_base"; + case "lock": + return "_lock"; + case "callback": + return "cb"; + case "readonly": + return "read_only"; + case "interface": + return "iface"; + case "internal": + return "_internal"; + case "where": + return "wh3r3"; + case "foreach": + return "for_each"; + case "remove": + return "_remove"; + default: + break; + } + + return name; + } + } +} diff --git a/generator/VMSignature.cs b/generator/VMSignature.cs index c14ce51..d2dbc7c 100644 --- a/generator/VMSignature.cs +++ b/generator/VMSignature.cs @@ -1,91 +1,91 @@ -// GtkSharp.Generation.VMSignature.cs - The Virtual Method Signature Generation Class.
-//
-// Author: Mike Kestner <mkestner@ximian.com>
-//
-// Copyright (c) 2003-2004 Novell, Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.Xml;
-
- public class VMSignature {
-
- private ArrayList parms = new ArrayList ();
-
- public VMSignature (Parameters parms)
- {
- bool has_cb = parms.HideData;
- for (int i = 0; i < parms.Count; i++) {
- Parameter p = parms [i];
-
- if (i > 0 && p.IsLength && parms [i - 1].IsString)
- continue;
-
- if (p.IsCount && ((i > 0 && parms [i - 1].IsArray) || (i < parms.Count - 1 && parms [i + 1].IsArray)))
- continue;
-
- has_cb = has_cb || p.Generatable is CallbackGen;
- if (p.IsUserData && has_cb)
- continue;
-
- if (p.CType == "GError**")
- continue;
-
- if (p.Scope == "notified")
- i += 2;
-
- this.parms.Add (p);
- }
- }
-
- public string GetCallString (bool use_place_holders)
- {
- if (parms.Count == 0)
- return "";
-
- string[] result = new string [parms.Count];
- int i = 0;
- foreach (Parameter p in parms) {
- result [i] = p.PassAs != "" ? p.PassAs + " " : "";
- result [i] += use_place_holders ? "{" + i + "}" : p.Name;
- i++;
- }
-
- return String.Join (", ", result);
- }
-
- public override string ToString ()
- {
- if (parms.Count == 0)
- return "";
-
- string[] result = new string [parms.Count];
- int i = 0;
-
- foreach (Parameter p in parms) {
- result [i] = p.PassAs != "" ? p.PassAs + " " : "";
- result [i++] += p.CSType + " " + p.Name;
- }
-
- return String.Join (", ", result);
- }
- }
-}
-
+// GtkSharp.Generation.VMSignature.cs - The Virtual Method Signature Generation Class. +// +// Author: Mike Kestner <mkestner@ximian.com> +// +// Copyright (c) 2003-2004 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.Xml; + + public class VMSignature { + + private IList<Parameter> parms = new List<Parameter> (); + + public VMSignature (Parameters parms) + { + bool has_cb = parms.HideData; + for (int i = 0; i < parms.Count; i++) { + Parameter p = parms [i]; + + if (i > 0 && p.IsLength && parms [i - 1].IsString) + continue; + + if (p.IsCount && ((i > 0 && parms [i - 1].IsArray) || (i < parms.Count - 1 && parms [i + 1].IsArray))) + continue; + + has_cb = has_cb || p.Generatable is CallbackGen; + if (p.IsUserData && has_cb) + continue; + + if (p.CType == "GError**") + continue; + + if (p.Scope == "notified") + i += 2; + + this.parms.Add (p); + } + } + + public string GetCallString (bool use_place_holders) + { + if (parms.Count == 0) + return ""; + + string[] result = new string [parms.Count]; + int i = 0; + foreach (Parameter p in parms) { + result [i] = p.PassAs != "" ? p.PassAs + " " : ""; + result [i] += use_place_holders ? "{" + i + "}" : p.Name; + i++; + } + + return String.Join (", ", result); + } + + public override string ToString () + { + if (parms.Count == 0) + return ""; + + string[] result = new string [parms.Count]; + int i = 0; + + foreach (Parameter p in parms) { + result [i] = p.PassAs != "" ? p.PassAs + " " : ""; + result [i++] += p.CSType + " " + p.Name; + } + + return String.Join (", ", result); + } + } +} + diff --git a/generator/XmlElementExtensions.cs b/generator/XmlElementExtensions.cs new file mode 100644 index 0000000..4bb4c4c --- /dev/null +++ b/generator/XmlElementExtensions.cs @@ -0,0 +1,20 @@ +using System; +using System.Xml; + +namespace GtkSharp.Generation +{ + public static class XmlElementExtensions + { + public static bool GetAttributeAsBoolean (this XmlElement elt, string name) + { + string value = elt.GetAttribute (name); + + if (String.IsNullOrEmpty (value)) { + return false; + } else { + return XmlConvert.ToBoolean (value); + } + } + } +} + diff --git a/gio/FileEnumerator.cs b/gio/FileEnumerator.cs index 5b5d656..3e7d6dc 100644 --- a/gio/FileEnumerator.cs +++ b/gio/FileEnumerator.cs @@ -21,34 +21,47 @@ namespace GLib { using System; using System.Collections; + using System.Collections.Generic; - public partial class FileEnumerator { - public IEnumerator GetEnumerator () + public partial class FileEnumerator : IEnumerable<FileInfo> { + public IEnumerator<FileInfo> GetEnumerator () { return new Enumerator (this); } - + + IEnumerator IEnumerable.GetEnumerator () + { + return GetEnumerator (); + } + public FileInfo NextFile () { return NextFile ((Cancellable) null); } - - class Enumerator : IEnumerator + + class Enumerator : IEnumerator<FileInfo> { FileEnumerator file_enumerator; - + public Enumerator (FileEnumerator file_enumerator) { this.file_enumerator = file_enumerator; } - - FileInfo current=null; - public object Current { + + void IDisposable.Dispose() { } + + FileInfo current; + public FileInfo Current { get { return current; } } - + + object IEnumerator.Current + { + get { return Current; } + } + public bool MoveNext () { current = file_enumerator.NextFile (); diff --git a/gio/Gio.metadata b/gio/Gio.metadata index 59a390d..a7e4540 100644 --- a/gio/Gio.metadata +++ b/gio/Gio.metadata @@ -37,7 +37,6 @@ <attr path="/api/namespace/interface[@cname='GTlsServerConnection']/property[@cname='authentication-mode']" name="hidden">1</attr> <attr path="/api/namespace/interface[@cname='GVolume']" name="consume_only">1</attr> <attr path="/api/namespace/interface[@cname='GVolume']/method[@name='GetMount']" name="name">GetMountInstance</attr> - <add-node path="/api/namespace/object[@cname='GFileEnumerator']"><implements><interface name="IEnumerable" /></implements></add-node> <attr path="/api/namespace/object[@cname='GApplication']/signal[@cname='activate']" name="name">Activated</attr> <attr path="/api/namespace/object[@cname='GApplication']/signal[@cname='open']" name="name">Opened</attr> <attr path="/api/namespace/object[@cname='GDBusAuthObserver']/signal[@cname='authorize-authenticated-peer']" name="name">AuthenticatedPeerAuthorized</attr> diff --git a/gio/Makefile.in b/gio/Makefile.in index 71dd1e5..7c2db9d 100644 --- a/gio/Makefile.in +++ b/gio/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ DIST_COMMON = $(srcdir)/../Makefile.include $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/gio-sharp-3.0.pc.in \ $(srcdir)/gio-sharp.dll.config.in @@ -154,8 +153,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -179,7 +176,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -234,6 +230,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -289,11 +287,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/gio/glue/Makefile.in b/gio/glue/Makefile.in index 1baaa16..9cdee07 100644 --- a/gio/glue/Makefile.in +++ b/gio/glue/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = gio/glue DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -137,8 +136,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -162,7 +159,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -217,6 +213,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -272,11 +270,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/glib/GType.cs b/glib/GType.cs index 68bba65..99022f5 100755 --- a/glib/GType.cs +++ b/glib/GType.cs @@ -23,7 +23,7 @@ namespace GLib { using System; - using System.Collections; + using System.Collections.Generic; using System.IO; using System.Reflection; using System.Runtime.InteropServices; @@ -88,8 +88,8 @@ namespace GLib { public static readonly GType Param = new GType ((IntPtr) TypeFundamentals.TypeParam); public static readonly GType Object = new GType ((IntPtr) TypeFundamentals.TypeObject); - static Hashtable types = new Hashtable (); - static Hashtable gtypes = new Hashtable (); + static IDictionary<IntPtr, Type> types = new Dictionary<IntPtr, Type> (); + static IDictionary<Type, GType> gtypes = new Dictionary<Type, GType> (); public static void Register (GType native_type, System.Type type) { @@ -131,8 +131,8 @@ namespace GLib { GType gtype; lock (types) { - if (gtypes.Contains (type)) - return (GType)gtypes[type]; + if (gtypes.ContainsKey (type)) + return gtypes[type]; } if (type.IsSubclassOf (typeof (GLib.Object))) { @@ -189,8 +189,8 @@ namespace GLib { public static Type LookupType (IntPtr typeid) { lock (types) { - if (types.Contains (typeid)) - return (Type)types[typeid]; + if (types.ContainsKey (typeid)) + return types[typeid]; } string native_name = Marshaller.Utf8PtrToString (g_type_name (typeid)); @@ -375,8 +375,8 @@ namespace GLib { internal static GType LookupGObjectType (System.Type t) { lock (types) { - if (gtypes.Contains (t)) - return (GType) gtypes [t]; + if (gtypes.ContainsKey (t)) + return gtypes [t]; } PropertyInfo pi = t.GetProperty ("GType", BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Public); diff --git a/glib/Makefile.in b/glib/Makefile.in index b875f1c..f90e4b4 100644 --- a/glib/Makefile.in +++ b/glib/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = glib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/glib-sharp-3.0.pc.in \ @@ -154,8 +153,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -179,7 +176,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -234,6 +230,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -289,11 +287,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/glib/Marshaller.cs b/glib/Marshaller.cs index 457beed..d28d57e 100644 --- a/glib/Marshaller.cs +++ b/glib/Marshaller.cs @@ -23,6 +23,7 @@ namespace GLib { using System; + using System.Collections.Generic; using System.Runtime.InteropServices; public class Marshaller { @@ -202,7 +203,7 @@ namespace GLib { return new string [0]; int count = 0; - System.Collections.ArrayList result = new System.Collections.ArrayList (); + var result = new List<string> (); IntPtr s = Marshal.ReadIntPtr (null_term_array, count++ * IntPtr.Size); while (s != IntPtr.Zero) { result.Add (Utf8PtrToString (s)); @@ -212,7 +213,7 @@ namespace GLib { if (owned) g_strfreev (null_term_array); - return (string[]) result.ToArray (typeof(string)); + return result.ToArray (); } public static string[] PtrToStringArrayGFree (IntPtr string_array) diff --git a/glib/Object.cs b/glib/Object.cs index 64c5790..15a7ded 100644 --- a/glib/Object.cs +++ b/glib/Object.cs @@ -82,6 +82,23 @@ namespace GLib { [DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] static extern void g_object_unref (IntPtr raw); + public static Object TryGetObject (IntPtr o) + { + if (o == IntPtr.Zero) + return null; + + ToggleRef toggle_ref; + lock (Objects) { + toggle_ref = (ToggleRef) Objects[o]; + } + + if (toggle_ref != null) { + return toggle_ref.Target; + } + + return null; + } + public static Object GetObject(IntPtr o, bool owned_ref) { if (o == IntPtr.Zero) @@ -90,9 +107,11 @@ namespace GLib { Object obj = null; ToggleRef toggle_ref; - if (Objects.TryGetValue (o, out toggle_ref)) { - if (toggle_ref != null) - obj = toggle_ref.Target; + lock (Objects) { + if (Objects.TryGetValue (o, out toggle_ref)) { + if (toggle_ref != null) + obj = toggle_ref.Target; + } } if (obj != null && obj.Handle == o) { @@ -527,17 +546,20 @@ namespace GLib { if (handle == value) return; - if (handle != IntPtr.Zero) { - Objects.Remove (handle); - if (tref != null) { - tref.Dispose (); - tref = null; + lock (Objects) { + if (handle != IntPtr.Zero) { + Objects.Remove (handle); + if (tref != null) { + tref.Dispose (); + tref = null; + } + } + + handle = value; + if (value != IntPtr.Zero) { + tref = new ToggleRef (this); + Objects [value] = tref; } - } - handle = value; - if (value != IntPtr.Zero) { - tref = new ToggleRef (this); - Objects [value] = tref; } } } diff --git a/glib/ValueArray.cs b/glib/ValueArray.cs index 4f42cb5..6483c9b 100644 --- a/glib/ValueArray.cs +++ b/glib/ValueArray.cs @@ -23,13 +23,14 @@ namespace GLib { using System; using System.Collections; + using System.Collections.Generic; using System.Runtime.InteropServices; public class ValueArray : IDisposable, ICollection, ICloneable, IWrapper { private IntPtr handle = IntPtr.Zero; - static private ArrayList PendingFrees = new ArrayList (); + static private IList<IntPtr> PendingFrees = new List<IntPtr> (); static private bool idle_queued = false; [DllImport ("libgobject-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] diff --git a/gtk/Container.cs b/gtk/Container.cs index 5730587..28ca251 100644 --- a/gtk/Container.cs +++ b/gtk/Container.cs @@ -24,7 +24,7 @@ namespace Gtk { using System.Collections; using System.Runtime.InteropServices; - public partial class Container { + public partial class Container : IEnumerable { [DllImport("gtksharpglue-3")] static extern void gtksharp_container_child_get_property (IntPtr container, IntPtr child, IntPtr property, ref GLib.Value value); @@ -134,9 +134,16 @@ namespace Gtk { static void ForallOld_cb (IntPtr container, bool include_internals, IntPtr cb, IntPtr data) { try { - Container obj = GLib.Object.GetObject (container, false) as Container; - CallbackInvoker invoker = new CallbackInvoker (cb, data); - obj.ForAll (include_internals, invoker); + //GtkContainer's unmanaged dispose calls forall, but by that time the managed object is gone + //so it couldn't do anything useful, and resurrecting it would cause a resurrection cycle. + //In that case, just chain to the native base in case it can do something. + Container obj = (Container) GLib.Object.TryGetObject (container); + if (obj != null) { + CallbackInvoker invoker = new CallbackInvoker (cb, data); + obj.ForAll (include_internals, invoker); + } else { + gtksharp_container_base_forall (container, include_internals, cb, data); + } } catch (Exception e) { GLib.ExceptionManager.RaiseUnhandledException (e, false); } @@ -159,9 +166,16 @@ namespace Gtk { static void Forall_cb (IntPtr container, bool include_internals, IntPtr cb, IntPtr data) { try { - Container obj = GLib.Object.GetObject (container, false) as Container; - CallbackInvoker invoker = new CallbackInvoker (cb, data); - obj.ForAll (include_internals, new Gtk.Callback (invoker.Invoke)); + //GtkContainer's unmanaged dispose calls forall, but by that time the managed object is gone + //so it couldn't do anything useful, and resurrecting it would cause a resurrection cycle. + //In that case, just chain to the native base in case it can do something. + Container obj = (Container) GLib.Object.TryGetObject (container); + if (obj != null) { + CallbackInvoker invoker = new CallbackInvoker (cb, data); + obj.ForAll (include_internals, new Gtk.Callback (invoker.Invoke)); + } else { + gtksharp_container_base_forall (container, include_internals, cb, data); + } } catch (Exception e) { GLib.ExceptionManager.RaiseUnhandledException (e, false); } diff --git a/gtk/Gtk.metadata b/gtk/Gtk.metadata index 7f5bd65..d046074 100644 --- a/gtk/Gtk.metadata +++ b/gtk/Gtk.metadata @@ -172,6 +172,7 @@ <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@name='GetItems']/return-type" name="element_type">GtkRecentInfo*</attr> <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@name='GetItems']/return-type" name="elements_owned">true</attr> <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@name='GetItems']/return-type" name="owned">true</attr> + <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@name='GetUris']/return-type" name="null_term_array">1</attr> <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@name='ListFilters']" name="name">GetFilters</attr> <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@cname='gtk_recent_chooser_list_filters']/return-type" name="element_type">GtkRecentFilter*</attr> <attr path="/api/namespace/interface[@cname='GtkRecentChooser']/method[@cname='gtk_recent_chooser_list_filters']/return-type" name="elements_owned">false</attr> @@ -311,7 +312,6 @@ <attr path="/api/namespace/object[@cname='GtkComboBox']/method[@name='SetTitle']" name="name">SetTearoffTitle</attr> <attr path="/api/namespace/object[@cname='GtkComboBox']/signal[@name='Popdown']" name="name">PoppedDown</attr> <attr path="/api/namespace/object[@cname='GtkComboBox']/signal[@name='Popup']" name="name">PoppedUp</attr> - <add-node path="/api/namespace/object[@cname='GtkContainer']"><implements><interface name="IEnumerable" /></implements></add-node> <attr path="/api/namespace/object[@cname='GtkContainer']/method[@name='AddWithProperties']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GtkContainer']/method[@name='ChildGet']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GtkContainer']/method[@name='ChildGetProperty']" name="hidden">1</attr> @@ -431,7 +431,6 @@ <attr path="/api/namespace/object[@cname='GtkLayout']/method[@name='GetVadjustment']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GtkLayout']/method[@name='SetHadjustment']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GtkLayout']/method[@name='SetVadjustment']" name="hidden">1</attr> - <add-node path="/api/namespace/object[@name='ListStore']"><implements><interface name="IEnumerable" /></implements></add-node> <attr path="/api/namespace/object[@cname='GtkListStore']/constructor[@cname='gtk_list_store_new']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GtkListStore']/constructor[@cname='gtk_list_store_newv']" name="hidden">1</attr> <attr path="/api/namespace/object[@cname='GtkListStore']/method[@name='Append']/*/*[@name='iter']" name="pass_as">out</attr> diff --git a/gtk/IconTheme.cs b/gtk/IconTheme.cs index 524cfd7..e8581ab 100644 --- a/gtk/IconTheme.cs +++ b/gtk/IconTheme.cs @@ -23,7 +23,7 @@ namespace Gtk { using System; - using System.Collections; + using System.Collections.Generic; using System.Runtime.InteropServices; public partial class IconTheme { @@ -117,7 +117,7 @@ namespace Gtk { { IntPtr icon_name_as_native = GLib.Marshaller.StringToPtrGStrdup (icon_name); IntPtr raw_ret = gtk_icon_theme_get_icon_sizes(Handle, icon_name_as_native); - ArrayList result = new ArrayList (); + var result = new List<int> (); int offset = 0; int size = Marshal.ReadInt32 (raw_ret, offset); while (size != 0) { @@ -127,7 +127,7 @@ namespace Gtk { } GLib.Marshaller.Free (icon_name_as_native); GLib.Marshaller.Free (raw_ret); - return (int[]) result.ToArray (typeof (int)); + return result.ToArray (); } } } diff --git a/gtk/Image.cs b/gtk/Image.cs index 8c85ae9..79f33c7 100644 --- a/gtk/Image.cs +++ b/gtk/Image.cs @@ -22,7 +22,7 @@ namespace Gtk { using System; - using System.Collections; + using System.Collections.Generic; using System.Runtime.InteropServices; public partial class Image { @@ -33,13 +33,13 @@ namespace Gtk { public Image (Gtk.IconSet icon_set, Gtk.IconSize size) : base (IntPtr.Zero) { if (GetType () != typeof (Image)) { - ArrayList vals = new ArrayList(); - ArrayList names = new ArrayList(); + var vals = new List<GLib.Value> (); + var names = new List<string> (); names.Add ("icon_set"); vals.Add (new GLib.Value (icon_set)); names.Add ("icon_size"); vals.Add (new GLib.Value ((int)size)); - CreateNativeObject ((string[])names.ToArray (typeof (string)), (GLib.Value[])vals.ToArray (typeof (GLib.Value))); + CreateNativeObject (names.ToArray (), vals.ToArray ()); return; } Raw = gtk_image_new_from_icon_set(icon_set.Handle, (int) size); @@ -51,13 +51,13 @@ namespace Gtk { public Image (string stock_id, Gtk.IconSize size) : base (IntPtr.Zero) { if (GetType () != typeof (Image)) { - ArrayList vals = new ArrayList(); - ArrayList names = new ArrayList(); + var vals = new List<GLib.Value> (); + var names = new List<string> (); names.Add ("stock"); vals.Add (new GLib.Value (stock_id)); names.Add ("icon_size"); vals.Add (new GLib.Value ((int)size)); - CreateNativeObject ((string[])names.ToArray (typeof (string)), (GLib.Value[])vals.ToArray (typeof (GLib.Value))); + CreateNativeObject (names.ToArray (), vals.ToArray ()); return; } IntPtr native = GLib.Marshaller.StringToPtrGStrdup (stock_id); diff --git a/gtk/ListStore.cs b/gtk/ListStore.cs index 757ebe6..8e60f50 100644 --- a/gtk/ListStore.cs +++ b/gtk/ListStore.cs @@ -24,7 +24,7 @@ namespace Gtk { using System.Collections; using System.Runtime.InteropServices; - public partial class ListStore { + public partial class ListStore : IEnumerable { [DllImport ("libgtk-win32-3.0-0.dll", CallingConvention = CallingConvention.Cdecl)] static extern bool gtk_tree_model_iter_children (IntPtr raw, out Gtk.TreeIter iter, IntPtr parent); diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 78a30aa..7deda33 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = . glue +SUBDIRS = . glue gui-thread-check pkg = gtk pkgconfigdir=$(libdir)/pkgconfig diff --git a/gtk/Makefile.in b/gtk/Makefile.in index 4e5b7a1..5e957d7 100644 --- a/gtk/Makefile.in +++ b/gtk/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/gtk-sharp-3.0.pc.in \ $(srcdir)/gtk-sharp.dll.config.in \ @@ -155,8 +154,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -180,7 +177,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -235,6 +231,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -290,15 +288,11 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SUBDIRS = . glue +SUBDIRS = . glue gui-thread-check pkg = gtk pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gtk-sharp-3.0.pc diff --git a/gtk/NodeStore.cs b/gtk/NodeStore.cs index 308db17..db24919 100644 --- a/gtk/NodeStore.cs +++ b/gtk/NodeStore.cs @@ -24,6 +24,7 @@ namespace Gtk { using System; using System.Collections; + using System.Collections.Generic; using System.Reflection; using System.Runtime.InteropServices; @@ -107,7 +108,7 @@ namespace Gtk { if (tna != null) list_only = tna.ListOnly; - ArrayList minfos = new ArrayList (); + var minfos = new List<MemberInfo> (); foreach (PropertyInfo pi in type.GetProperties ()) foreach (TreeNodeValueAttribute attr in pi.GetCustomAttributes (typeof (TreeNodeValueAttribute), false)) @@ -199,12 +200,12 @@ namespace Gtk { #endregion #region Gtk.TreeIter handling - ArrayList gc_handles = new ArrayList (); + IList<GCHandle> gc_handles = new List<GCHandle> (); protected override void Dispose (bool disposing) { // Free all the GCHandles pointing to the iters since they won't be garbage collected - foreach (System.Runtime.InteropServices.GCHandle handle in gc_handles) + foreach (GCHandle handle in gc_handles) handle.Free (); base.Dispose (disposing); diff --git a/gtk/Widget.cs b/gtk/Widget.cs index c348961..fef2707 100644 --- a/gtk/Widget.cs +++ b/gtk/Widget.cs @@ -24,7 +24,7 @@ namespace Gtk { using System; - using System.Collections; + using System.Collections.Generic; using System.Runtime.InteropServices; public partial class Widget { @@ -134,10 +134,11 @@ namespace Gtk { } } - /* As gtk_binding_entry_add_signall only allows passing long, double and string parameters to the specified signal, we cannot pass a pointer to the BindingInvoker directly - * to the signal. Instead, the signal takes the index of the BindingInvoker in binding_invokers. - */ - static ArrayList binding_invokers; + /* As gtk_binding_entry_add_signall only allows passing long, double and string parameters + * to the specified signal, we cannot pass a pointer to the BindingInvoker directly to the signal. + * Instead, the signal takes the index of the BindingInvoker in binding_invokers. + */ + static IList<BindingInvoker> binding_invokers; static void BindingMarshal_cb (IntPtr raw_closure, IntPtr return_val, uint n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) { @@ -148,7 +149,7 @@ namespace Gtk { inst_and_params [idx] = (GLib.Value) Marshal.PtrToStructure (new IntPtr (param_values.ToInt64 () + idx * gvalue_size), typeof (GLib.Value)); Widget w = inst_and_params [0].Val as Widget; - BindingInvoker invoker = binding_invokers [(int) (long) inst_and_params [1]] as BindingInvoker; + BindingInvoker invoker = binding_invokers [(int) (long) inst_and_params [1]]; invoker.Invoke (w); } catch (Exception e) { GLib.ExceptionManager.RaiseUnhandledException (e, false); @@ -197,7 +198,7 @@ namespace Gtk { RegisterSignal (signame, gtype, GLib.Signal.Flags.RunLast | GLib.Signal.Flags.Action, GLib.GType.None, new GLib.GType[] {GLib.GType.Long}, BindingDelegate); if (binding_invokers == null) - binding_invokers = new ArrayList (); + binding_invokers = new List<BindingInvoker> (); foreach (BindingAttribute attr in attrs) { System.Reflection.MethodInfo mi = t.GetMethod (attr.Handler, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public); @@ -206,7 +207,10 @@ namespace Gtk { GtkBindingArg arg = new GtkBindingArg (); arg.arg_type = GLib.GType.Long.Val; - int binding_invoker_idx = binding_invokers.Add (new BindingInvoker (mi, attr.Parms)); + + var bi = new BindingInvoker (mi, attr.Parms); + binding_invokers.Add (bi); + int binding_invoker_idx = binding_invokers.IndexOf (bi); #if WIN64LONGS arg.data.long_data = binding_invoker_idx; #else @@ -296,15 +300,11 @@ namespace Gtk { Path (out len, out path, out path_reversed); } - -// Code from custom code for Gtk.Object in 2.x -// Object is gone in 3.x - - static Hashtable destroy_handlers; - static Hashtable DestroyHandlers { + static IDictionary<IntPtr, Delegate> destroy_handlers; + static IDictionary<IntPtr, Delegate> DestroyHandlers { get { if (destroy_handlers == null) - destroy_handlers = new Hashtable (); + destroy_handlers = new Dictionary<IntPtr, Delegate> (); return destroy_handlers; } } @@ -320,7 +320,7 @@ namespace Gtk { [GLib.DefaultSignalHandler(Type=typeof(Gtk.Widget), ConnectionMethod="OverrideDestroyed")] protected virtual void OnDestroyed () { - if (DestroyHandlers.Contains (Handle)) { + if (DestroyHandlers.ContainsKey (Handle)) { EventHandler handler = (EventHandler) DestroyHandlers [Handle]; handler (this, EventArgs.Empty); DestroyHandlers.Remove (Handle); diff --git a/gtk/glue/Makefile.in b/gtk/glue/Makefile.in index 1aedc3e..b07cb29 100644 --- a/gtk/glue/Makefile.in +++ b/gtk/glue/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = gtk/glue DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -138,8 +137,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -163,7 +160,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -218,6 +214,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -273,11 +271,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/gtk/glue/container.c b/gtk/glue/container.c index b9c7b75..2e0d407 100644 --- a/gtk/glue/container.c +++ b/gtk/glue/container.c @@ -20,15 +20,24 @@ */ #include <gtk/gtk.h> +#include <string.h> void gtksharp_container_base_forall (GtkContainer *container, gboolean include_internals, GtkCallback cb, gpointer data); void gtksharp_container_base_forall (GtkContainer *container, gboolean include_internals, GtkCallback cb, gpointer data) { - GtkContainerClass *parent = g_type_class_peek_parent (G_OBJECT_GET_CLASS (container)); - if (parent->forall) - (*parent->forall) (container, include_internals, cb, data); + // Find and call the first base callback that's not the GTK# callback. The GTK# callback calls down the whole + // managed override chain, so calling it on a subclass-of-a-managed-container-subclass causes a stack overflow. + GtkContainerClass *parent = (GtkContainerClass *) G_OBJECT_GET_CLASS (container); + while ((parent = g_type_class_peek_parent (parent))) { + if (strncmp (G_OBJECT_CLASS_NAME (parent), "__gtksharp_", 11) != 0) { + if (parent->forall) { + (*parent->forall) (container, include_internals, cb, data); + } + return; + } + } } void gtksharp_container_override_forall (GType gtype, gpointer cb); diff --git a/gtk/gui-thread-check/COPYING b/gtk/gui-thread-check/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/gtk/gui-thread-check/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/gtk/gui-thread-check/Makefile.am b/gtk/gui-thread-check/Makefile.am new file mode 100644 index 0000000..060fd90 --- /dev/null +++ b/gtk/gui-thread-check/Makefile.am @@ -0,0 +1,3 @@ + +SUBDIRS = profiler + diff --git a/gtk/gui-thread-check/Makefile.in b/gtk/gui-thread-check/Makefile.in new file mode 100644 index 0000000..cbc9ec7 --- /dev/null +++ b/gtk/gui-thread-check/Makefile.in @@ -0,0 +1,614 @@ +# Makefile.in generated by automake 1.11.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = gtk/gui-thread-check +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in COPYING +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AL = @AL@ +AMTAR = @AMTAR@ +API_VERSION = @API_VERSION@ +AR = @AR@ +AS = @AS@ +ATK_CFLAGS = @ATK_CFLAGS@ +ATK_LIBS = @ATK_LIBS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_EXEEXT = @BUILD_EXEEXT@ +CAIRO_API_VERSION = @CAIRO_API_VERSION@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSC = @CSC@ +CSFLAGS = @CSFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GACUTIL = @GACUTIL@ +GACUTIL_FLAGS = @GACUTIL_FLAGS@ +GENERATED_SOURCES = @GENERATED_SOURCES@ +GIO_CFLAGS = @GIO_CFLAGS@ +GIO_LIBS = @GIO_LIBS@ +GLIB_2_31_CFLAGS = @GLIB_2_31_CFLAGS@ +GLIB_2_31_LIBS = @GLIB_2_31_LIBS@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_LIBS = @GLIB_LIBS@ +GREP = @GREP@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +HOST_CC = @HOST_CC@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_PREFIX = @LIB_PREFIX@ +LIB_SUFFIX = @LIB_SUFFIX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MDOC = @MDOC@ +MKDIR_P = @MKDIR_P@ +MONO_DEPENDENCY_CFLAGS = @MONO_DEPENDENCY_CFLAGS@ +MONO_DEPENDENCY_LIBS = @MONO_DEPENDENCY_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OFF_T_FLAGS = @OFF_T_FLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANGO_CFLAGS = @PANGO_CFLAGS@ +PANGO_LIBS = @PANGO_LIBS@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ +RANLIB = @RANLIB@ +RUNTIME = @RUNTIME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = profiler +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gtk/gui-thread-check/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign gtk/gui-thread-check/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gtk/gui-thread-check/profiler/Makefile.am b/gtk/gui-thread-check/profiler/Makefile.am new file mode 100644 index 0000000..c253f70 --- /dev/null +++ b/gtk/gui-thread-check/profiler/Makefile.am @@ -0,0 +1,8 @@ + +lib_LTLIBRARIES = libmono-profiler-gui-thread-check.la + +libmono_profiler_gui_thread_check_la_SOURCES = gui-thread-check.c + +libmono_profiler_gui_thread_check_la_LIBADD = @PROFILER_LIBS@ + +INCLUDES = @PROFILER_CFLAGS@ -Wall diff --git a/gtk/gui-thread-check/profiler/Makefile.in b/gtk/gui-thread-check/profiler/Makefile.in new file mode 100644 index 0000000..f403b58 --- /dev/null +++ b/gtk/gui-thread-check/profiler/Makefile.in @@ -0,0 +1,588 @@ +# Makefile.in generated by automake 1.11.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = gtk/gui-thread-check/profiler +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libmono_profiler_gui_thread_check_la_DEPENDENCIES = +am_libmono_profiler_gui_thread_check_la_OBJECTS = gui-thread-check.lo +libmono_profiler_gui_thread_check_la_OBJECTS = \ + $(am_libmono_profiler_gui_thread_check_la_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libmono_profiler_gui_thread_check_la_SOURCES) +DIST_SOURCES = $(libmono_profiler_gui_thread_check_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AL = @AL@ +AMTAR = @AMTAR@ +API_VERSION = @API_VERSION@ +AR = @AR@ +AS = @AS@ +ATK_CFLAGS = @ATK_CFLAGS@ +ATK_LIBS = @ATK_LIBS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_EXEEXT = @BUILD_EXEEXT@ +CAIRO_API_VERSION = @CAIRO_API_VERSION@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSC = @CSC@ +CSFLAGS = @CSFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GACUTIL = @GACUTIL@ +GACUTIL_FLAGS = @GACUTIL_FLAGS@ +GENERATED_SOURCES = @GENERATED_SOURCES@ +GIO_CFLAGS = @GIO_CFLAGS@ +GIO_LIBS = @GIO_LIBS@ +GLIB_2_31_CFLAGS = @GLIB_2_31_CFLAGS@ +GLIB_2_31_LIBS = @GLIB_2_31_LIBS@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_LIBS = @GLIB_LIBS@ +GREP = @GREP@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +HOST_CC = @HOST_CC@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_PREFIX = @LIB_PREFIX@ +LIB_SUFFIX = @LIB_SUFFIX@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MDOC = @MDOC@ +MKDIR_P = @MKDIR_P@ +MONO_DEPENDENCY_CFLAGS = @MONO_DEPENDENCY_CFLAGS@ +MONO_DEPENDENCY_LIBS = @MONO_DEPENDENCY_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OFF_T_FLAGS = @OFF_T_FLAGS@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANGO_CFLAGS = @PANGO_CFLAGS@ +PANGO_LIBS = @PANGO_LIBS@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ +RANLIB = @RANLIB@ +RUNTIME = @RUNTIME@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = libmono-profiler-gui-thread-check.la +libmono_profiler_gui_thread_check_la_SOURCES = gui-thread-check.c +libmono_profiler_gui_thread_check_la_LIBADD = @PROFILER_LIBS@ +INCLUDES = @PROFILER_CFLAGS@ -Wall +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gtk/gui-thread-check/profiler/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign gtk/gui-thread-check/profiler/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libmono-profiler-gui-thread-check.la: $(libmono_profiler_gui_thread_check_la_OBJECTS) $(libmono_profiler_gui_thread_check_la_DEPENDENCIES) $(EXTRA_libmono_profiler_gui_thread_check_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libmono_profiler_gui_thread_check_la_OBJECTS) $(libmono_profiler_gui_thread_check_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui-thread-check.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gtk/gui-thread-check/profiler/gui-thread-check.c b/gtk/gui-thread-check/profiler/gui-thread-check.c new file mode 100644 index 0000000..4ec8643 --- /dev/null +++ b/gtk/gui-thread-check/profiler/gui-thread-check.c @@ -0,0 +1,93 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +/* + * gui-thread-check.c + * + * Copyright (C) 2008 Novell, Inc. + * + */ + +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + */ + +#include <string.h> +#include <glib.h> +#include <mono/metadata/profiler.h> + + +extern pthread_t pthread_self (void); + +static gboolean +stack_walk_fn (MonoMethod *method, gint32 native_offset, gint32 il_offset, gboolean managed, gpointer data) +{ + if (managed) { + MonoClass* klass = mono_method_get_class (method); + const char* method_name = mono_method_get_name (method); + const char* klass_name = mono_class_get_name (klass); + printf (" %s.%s\n", klass_name, method_name); + } + return FALSE; +} + +static void +simple_method_enter (MonoProfiler *prof, MonoMethod *method) +{ + static int guithread; + static gboolean guithread_set = FALSE; + MonoClass* klass; + const char* name_space; + + klass = mono_method_get_class (method); + name_space = mono_class_get_namespace (klass); + + int current_thread_id = (int) pthread_self(); + + if (strstr (name_space, "Gtk") == name_space || strstr (name_space, "Gdk") == name_space) { + const char* method_name = mono_method_get_name (method); + const char* klass_name = mono_class_get_name (klass); + + if (!guithread_set && strcmp (klass_name, "Application")==0 && strcmp (method_name, "Init")==0) { + guithread_set = TRUE; + guithread = current_thread_id; + printf ("*** GUI THREAD INITIALIZED: %u\n", guithread); + return; + } + if (!guithread_set) { + return; + } + if (current_thread_id != guithread && + !(strcmp (klass_name, "Object")==0 && strcmp (method_name, "Dispose")==0) && + !(strcmp (klass_name, "Application")==0 && strcmp (method_name, "Invoke")==0) && + !(strcmp (method_name, "Finalize")==0) && + !(strcmp (method_name, "get_NativeDestroyHandler")==0) && + !(strcmp (method_name, "remove_Destroyed")==0) + ) { + printf ("*** GTK CALL NOT IN GUI THREAD: %s.%s\n", klass_name, method_name); + mono_stack_walk_no_il (stack_walk_fn, NULL); + } + } +} + +void +mono_profiler_startup (const char *desc) +{ + g_print ("*** Running with gui-thread-check ***\n"); + + mono_profiler_install (NULL, NULL); + mono_profiler_install_enter_leave (simple_method_enter, NULL); + mono_profiler_set_events (MONO_PROFILE_ENTER_LEAVE); +} + diff --git a/gtkdotnet/Makefile.in b/gtkdotnet/Makefile.in index 8685c52..0fa9d54 100644 --- a/gtkdotnet/Makefile.in +++ b/gtkdotnet/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = gtkdotnet DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/gtk-dotnet-3.0.pc.in \ @@ -114,8 +113,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -139,7 +136,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -194,6 +190,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -249,11 +247,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/pango/Makefile.in b/pango/Makefile.in index e3aad37..e0f644e 100644 --- a/pango/Makefile.in +++ b/pango/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/pango-sharp.dll.config.in \ $(top_srcdir)/Makefile.include @@ -154,8 +153,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -179,7 +176,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -234,6 +230,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -289,11 +287,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/pango/glue/Makefile.in b/pango/glue/Makefile.in index c1206ac..d3412ad 100644 --- a/pango/glue/Makefile.in +++ b/pango/glue/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = pango/glue DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -137,8 +136,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -162,7 +159,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -217,6 +213,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -272,11 +270,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/parser/Makefile.in b/parser/Makefile.in index 9ecfd25..defe26b 100644 --- a/parser/Makefile.in +++ b/parser/Makefile.in @@ -52,7 +52,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = parser DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/gapi-3.0.pc.in $(srcdir)/gapi3-fixup.in \ @@ -117,8 +116,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -142,7 +139,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -197,6 +193,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -252,11 +250,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/Actions.cs b/sample/Actions.cs index cc25aaa..f9880c1 100644 --- a/sample/Actions.cs +++ b/sample/Actions.cs @@ -8,7 +8,7 @@ namespace GtkSamples { using Gtk; using System; - using System.Collections; + using System.Collections.Generic; public class Actions { static VBox box = null; @@ -19,7 +19,7 @@ namespace GtkSamples { static ActionGroup dynGroup = null; static uint mergeId = 0; static UIManager uim = null; - static Hashtable actions = new Hashtable (); + static Dictionary<Widget, Gtk.Action> actions = new Dictionary<Widget, Gtk.Action> (); /* XML description of the menus for the test app. The parser understands * a subset of the Bonobo UI XML format, and uses GMarkup for parsing */ @@ -299,7 +299,7 @@ namespace GtkSamples { static void OnSelect (object obj, EventArgs args) { - Gtk.Action action = (Gtk.Action) actions[obj]; + Gtk.Action action = actions[(Widget)obj]; if (action.Tooltip != null) statusbar.Push (0, action.Tooltip); } diff --git a/sample/GtkDemo/DemoEditableCells.cs b/sample/GtkDemo/DemoEditableCells.cs index df88ee4..56848af 100644 --- a/sample/GtkDemo/DemoEditableCells.cs +++ b/sample/GtkDemo/DemoEditableCells.cs @@ -7,7 +7,7 @@ */ using System; -using System.Collections; +using System.Collections.Generic; using Gtk; namespace GtkDemo @@ -17,7 +17,7 @@ namespace GtkDemo { private ListStore store; private TreeView treeView; - private ArrayList articles; + private IList<Item> articles; public DemoEditableCells () : base ("Shopping list") { @@ -82,7 +82,7 @@ namespace GtkDemo private ListStore CreateModel () { // create array - articles = new ArrayList (); + articles = new List<Item> (); AddItems (); // create list store @@ -130,7 +130,7 @@ namespace GtkDemo Item foo; try { - foo = (Item) articles[i]; + foo = articles[i]; foo.Number = int.Parse (args.NewText); } catch (Exception e) { Console.WriteLine (e); @@ -147,7 +147,7 @@ namespace GtkDemo store.GetIter (out iter, path); int i = path.Indices[0]; - Item foo = (Item) articles[i]; + Item foo = articles[i]; foo.Product = args.NewText; store.SetValue (iter, (int) Column.Product, foo.Product); } diff --git a/sample/GtkDemo/DemoHyperText.cs b/sample/GtkDemo/DemoHyperText.cs index a657aaf..8e91e03 100644 --- a/sample/GtkDemo/DemoHyperText.cs +++ b/sample/GtkDemo/DemoHyperText.cs @@ -7,7 +7,7 @@ */ using System; -using System.Collections; +using System.Collections.Generic; using Gtk; namespace GtkDemo @@ -41,7 +41,7 @@ namespace GtkDemo ShowAll (); } - Hashtable tag_pages = new Hashtable (); + IDictionary<TextTag, int> tag_pages = new Dictionary<TextTag, int> (); // Inserts a piece of text into the buffer, giving it the usual // appearance of a hyperlink in a web browser: blue and underlined. @@ -100,9 +100,8 @@ namespace GtkDemo void FollowIfLink (TextView view, TextIter iter) { foreach (TextTag tag in iter.Tags) { - object page = tag_pages [tag]; - if (page is int) - ShowPage (view.Buffer, (int)page); + int page = tag_pages [tag]; + ShowPage (view.Buffer, (int)page); } } @@ -115,10 +114,8 @@ namespace GtkDemo TextIter iter = view.GetIterAtLocation (x, y); foreach (TextTag tag in iter.Tags) { - if (tag_pages [tag] is int) { - hovering = true; - break; - } + hovering = true; + break; } if (hovering != hoveringOverLink) { diff --git a/sample/GtkDemo/DemoMain.cs b/sample/GtkDemo/DemoMain.cs index b2b39dd..961be1d 100644 --- a/sample/GtkDemo/DemoMain.cs +++ b/sample/GtkDemo/DemoMain.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using System.Reflection; @@ -197,7 +197,7 @@ namespace GtkDemo { // title, filename, italic store = new TreeStore (typeof (string), typeof (System.Type), typeof (bool)); - Hashtable parents = new Hashtable (); + Dictionary<string, TreeIter> parents = new Dictionary<string, TreeIter> (); TreeIter parent; Type[] types = Assembly.GetExecutingAssembly ().GetTypes (); @@ -205,10 +205,10 @@ namespace GtkDemo object[] att = t.GetCustomAttributes (typeof (DemoAttribute), false); foreach (DemoAttribute demo in att) { if (demo.Parent != null) { - if (!parents.Contains (demo.Parent)) + if (!parents.ContainsKey (demo.Parent)) parents.Add (demo.Parent, store.AppendValues (demo.Parent)); - parent = (TreeIter) parents[demo.Parent]; + parent = parents[demo.Parent]; store.AppendValues (parent, demo.Label, t, false); } else { store.AppendValues (demo.Label, t, false); diff --git a/sample/GtkDemo/DemoPanes.cs b/sample/GtkDemo/DemoPanes.cs index 66f972c..72db744 100644 --- a/sample/GtkDemo/DemoPanes.cs +++ b/sample/GtkDemo/DemoPanes.cs @@ -13,7 +13,7 @@ using System; -using System.Collections; +using System.Collections.Generic; using Gtk; namespace GtkDemo @@ -21,7 +21,7 @@ namespace GtkDemo [Demo ("Paned Widget", "DemoPanes.cs")] public class DemoPanes : Gtk.Window { - Hashtable children = new Hashtable (); + Dictionary<ToggleButton, Widget> children = new Dictionary<ToggleButton, Widget> (); public DemoPanes () : base ("Panes") { @@ -113,7 +113,7 @@ namespace GtkDemo private void ToggleResize (object obj, EventArgs args) { ToggleButton toggle = obj as ToggleButton; - Widget child = children[obj] as Widget; + Widget child = children[toggle]; Paned paned = child.Parent as Paned; Paned.PanedChild pc = paned[child] as Paned.PanedChild; @@ -123,7 +123,7 @@ namespace GtkDemo private void ToggleShrink (object obj, EventArgs args) { ToggleButton toggle = obj as ToggleButton; - Widget child = children[obj] as Widget; + Widget child = children[toggle]; Paned paned = child.Parent as Paned; Paned.PanedChild pc = paned[child] as Paned.PanedChild; diff --git a/sample/GtkDemo/Makefile.in b/sample/GtkDemo/Makefile.in index 22ae38a..5a2d154 100644 --- a/sample/GtkDemo/Makefile.in +++ b/sample/GtkDemo/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/GtkDemo DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -84,8 +83,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -109,7 +106,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -164,6 +160,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -219,11 +217,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/Makefile.in b/sample/Makefile.in index 43273c3..e4654bb 100644 --- a/sample/Makefile.in +++ b/sample/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -124,8 +123,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -149,7 +146,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -204,6 +200,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -259,11 +257,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/PolarFixed.cs b/sample/PolarFixed.cs index 5a3462d..8c7b002 100644 --- a/sample/PolarFixed.cs +++ b/sample/PolarFixed.cs @@ -1,16 +1,16 @@ // This is a completely pointless widget, but it shows how to subclass container... using System; -using System.Collections; +using System.Collections.Generic; using Gtk; using Gdk; class PolarFixed : Container { - ArrayList children; + IList<PolarFixedChild> children; public PolarFixed () { - children = new ArrayList (); + children = new List<PolarFixedChild> (); HasWindow = false; } diff --git a/sample/gio/Makefile.in b/sample/gio/Makefile.in index ff9fa39..b263fb0 100644 --- a/sample/gio/Makefile.in +++ b/sample/gio/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/gio DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -84,8 +83,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -109,7 +106,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -164,6 +160,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -219,11 +217,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/gtk-gio/Makefile.in b/sample/gtk-gio/Makefile.in index 8b923f8..cd3712e 100644 --- a/sample/gtk-gio/Makefile.in +++ b/sample/gtk-gio/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/gtk-gio DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -84,8 +83,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -109,7 +106,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -164,6 +160,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -219,11 +217,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/opaquetest/Makefile.in b/sample/opaquetest/Makefile.in index aad52cb..19cd760 100644 --- a/sample/opaquetest/Makefile.in +++ b/sample/opaquetest/Makefile.in @@ -52,7 +52,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/opaquetest DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/opaquetest.exe.config.in @@ -137,8 +136,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -162,7 +159,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -217,6 +213,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -272,11 +270,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/pixmaps/Makefile.in b/sample/pixmaps/Makefile.in index 978bd97..59e1eaf 100644 --- a/sample/pixmaps/Makefile.in +++ b/sample/pixmaps/Makefile.in @@ -50,7 +50,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/pixmaps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -82,8 +81,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -107,7 +104,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -162,6 +158,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -217,11 +215,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/test/Makefile.in b/sample/test/Makefile.in index fda821a..ad9fbf8 100644 --- a/sample/test/Makefile.in +++ b/sample/test/Makefile.in @@ -51,7 +51,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/test DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -84,8 +83,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -109,7 +106,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -164,6 +160,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -219,11 +217,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sample/valtest/Makefile.in b/sample/valtest/Makefile.in index ccb1a3c..310ceca 100644 --- a/sample/valtest/Makefile.in +++ b/sample/valtest/Makefile.in @@ -52,7 +52,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sample/valtest DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/valtest.exe.config.in @@ -137,8 +136,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -162,7 +159,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -217,6 +213,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -272,11 +270,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sources/Makefile.in b/sources/Makefile.in index 4272519..e84e6a4 100644 --- a/sources/Makefile.in +++ b/sources/Makefile.in @@ -50,7 +50,6 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -target_triplet = @target@ subdir = sources DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -82,8 +81,6 @@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_EXEEXT = @BUILD_EXEEXT@ -BUILD_GTK_CFLAGS = @BUILD_GTK_CFLAGS@ -BUILD_GTK_LIBS = @BUILD_GTK_LIBS@ CAIRO_API_VERSION = @CAIRO_API_VERSION@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ @@ -107,7 +104,6 @@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GACUTIL = @GACUTIL@ GACUTIL_FLAGS = @GACUTIL_FLAGS@ -GDK_BACKEND = @GDK_BACKEND@ GENERATED_SOURCES = @GENERATED_SOURCES@ GIO_CFLAGS = @GIO_CFLAGS@ GIO_LIBS = @GIO_LIBS@ @@ -162,6 +158,8 @@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POLICY_VERSIONS = @POLICY_VERSIONS@ +PROFILER_CFLAGS = @PROFILER_CFLAGS@ +PROFILER_LIBS = @PROFILER_LIBS@ RANLIB = @RANLIB@ RUNTIME = @RUNTIME@ SED = @SED@ @@ -217,11 +215,7 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ -target = @target@ target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/sources/README b/sources/README index 79d3f3d..ae4672b 100644 --- a/sources/README +++ b/sources/README @@ -1,50 +1,26 @@ The contents of this directory are (basically) the first step in creating .NET bindings, to libraries based on GObject. -QUICK INSTRUCTIONS ------------------- - - Edit the .metadata file(s), then do a: - - make get-source-code - make api - - You only have to do a "make get-source-code" once! After - you have run "make get-source-code" once, do the following... - - - Edit the .metadata file(s), then do a: - - make api - - - Note, these instructions only generate XML files in the "api" - directory. To turn those XML files (in the "api" directory) - into C# code; and then turn that C# code into a .DLL, you'll - need to perform extra steps, which are NOT described in this - document. - - (If you are going to create a new .NET binding, then you will need - to do more than just this.) - - WHO USES THE SOURCES DIRECTORY ------------------------------ - This directory is essentially the "starting point" in the creation - of a .NET binding. Most people can safely ignore it. (If all + This directory is essentially the starting point in the creation + of a .NET binding. Most people can safely ignore it. (If all you want to do is build Gtk#, then you can ignore what's in this directory.) - This directory is not part of the normal "build process" for Gtk#. + This directory is not part of the normal build process for Gtk#. But is instead used by people wishing to update an existing .NET binding; or to create a new .NET binding (for a GObject based library). The result of running "make api" on this directory (once everything - is set up) are the XML files that you find in the "api" directory. - (Those XML files, that you find in the "api" directory, are then used - to generate the C# code. And then that C# code is used to create - the various .DLL files.) + is set up) are the various '*-api.raw' XML files that you find in the + corresponding directories. Those XML files will then be used to generate + the C# code. And then that C# code is used to create the various .DLL + files. + + Please refer to http://www.mono-project.com/GAPI for a more complete and + up-to-date guide to this process. WHAT'S REQUIRED @@ -52,63 +28,32 @@ WHAT'S REQUIRED Before you can do anything here, you need to get the source code to the various libraries (which you are generating .NET - bindings for). And then do a little configuring. The current - list of libraries that Gtk# supports is: - - pango-1.4.0 - atk-1.6.0 - gtk+-2.4.1 - libgnome-2.6.0 - libgnomecanvas-2.6.0 - libgnomeui-2.6.0 - libgnomeprint-2.6.0 - libgnomeprintui-2.6.0 - gtkhtml-3.0.10 files: gtkhtml.[ch], gtkhtml-types.h, - gtkhtml-enums.h, gtkhtml-stream.[ch] - libglade-2.3.6 - libart_lgpl-2.3.16 - librsvg-2.6.4 - gnome-vfs-2.6.0 - gnome-panel-2.6.0 - - (If you create a new binding, that is part of Gtk#, be sure to add it - to this list. Also, you'll need to add an entry in "gtk-sharp.sources". - And you should add it to the "makefile" so that it is part of the - "get-source-code" rule.) - - (There are two ways to get this source code. As you will see in the - next section.) + bindings for). And then do a little configuring. The current + list of libraries that Gtk# supports is in the sources.xml and Makefile.am + files. + + If you create a new binding that is part of Gtk#, be sure to add it to this + list. + + There are two ways to get this source code, as you will see in the + next section. SETTING THINGS UP ----------------- To set things up, you need to get the source code to the libraries listed - above. There are two (alternate) methods of doing this. + above. There are two (alternate) methods of doing this. Method 1) - Download it. Unpack the source code (if necessary). Then do the extra - cofiguration stuff listed above. + Download and unpack the source code manually. Method 2) Run: make get-source-code + (Method 2 is probably the easiest way to do it for most people. It + automatically goes and downloads everything you need, and sets everything + up for you.) - (Method 2 is probably the easiest way to do it for most people. It automatically - goes and downloads everything you need. And configures everything for you.) - - -EDITING .METADATA FILES ------------------------ - - Part of updating a .NET binding involves editing a .metadata file. - (Assuming you already have the required source code, to the - libraries...) once you update a binding, you then run: - - make api - - ...to create the new updated XML file(s) that will be placed in the "api" - directory. - - + For more information, please refer to http://www.mono-project.com/GAPI diff --git a/sources/sources.xml b/sources/sources.xml index 3aadf89..f22a014 100644 --- a/sources/sources.xml +++ b/sources/sources.xml @@ -35,7 +35,7 @@ <exclude>gwin32outputstream.h</exclude> <exclude>gwin32resolver.h</exclude> <exclude>gwin32volumemonitor.h</exclude> - </directory> + </directory> </namespace> </library> </api> @@ -50,39 +50,40 @@ <library name="libpango-1.0-0.dll"> <namespace name="Pango"> <directory path="pango-1.28.3/pango"> - <exclude>pangoatsui.c</exclude> - <exclude>pangoatsui.h</exclude> - <exclude>pangoatsui-fontmap.h</exclude> - <exclude>pangoatsui-private.h</exclude> - <exclude>pangocairo-atsui.h</exclude> - <exclude>pangocairo-atsuifont.h</exclude> - <exclude>pangocairo-fc.h</exclude> - <exclude>pangocairo-win32.h</exclude> - <exclude>pangocairo-private.h</exclude> - <exclude>pangofc-decoder.c</exclude> - <exclude>pangofc-decoder.h</exclude> - <exclude>pangofc-font.c</exclude> - <exclude>pangofc-font.h</exclude> - <exclude>pangofc-fontmap.c</exclude> - <exclude>pangofc-fontmap.h</exclude> - <exclude>pangofc-private.h</exclude> - <exclude>pangox-fontcache.c</exclude> - <exclude>pangox-fontmap.c</exclude> - <exclude>pangox-private.h</exclude> - <exclude>pangox.h</exclude> - <exclude>pangox.c</exclude> - <exclude>pangoxft.h</exclude> - <exclude>pangoxft-font.c</exclude> - <exclude>pangoxft-font.h</exclude> - <exclude>pangoxft-fontmap.c</exclude> - <exclude>pangoxft-fontmap.h</exclude> - <exclude>pangoxft-private.h</exclude> - <exclude>pangoxft-render.c</exclude> - <exclude>pangoxft-render.h</exclude> - <exclude>pango-color-table.h</exclude> - <exclude>pango-impl-utils.h</exclude> - <exclude>pango-script-lang-table.h</exclude> - <exclude>pango-script-table.h</exclude> + <exclude>pangoatsui.c</exclude> + <exclude>pangoatsui.h</exclude> + <exclude>pangoatsui-fontmap.h</exclude> + <exclude>pangoatsui-private.h</exclude> + <exclude>pangocairo-atsui.h</exclude> + <exclude>pangocairo-atsuifont.h</exclude> + <exclude>pangocairo-fc.h</exclude> + <exclude>pangocairo-win32.h</exclude> + <exclude>pangocairo-private.h</exclude> + <exclude>pangofc-decoder.c</exclude> + <exclude>pangofc-decoder.h</exclude> + <exclude>pangofc-font.c</exclude> + <exclude>pangofc-font.h</exclude> + <exclude>pangofc-fontmap.c</exclude> + <exclude>pangofc-fontmap.h</exclude> + <exclude>pangofc-private.h</exclude> + <exclude>pangox-fontcache.c</exclude> + <exclude>pangox-fontmap.c</exclude> + <exclude>pangox-private.h</exclude> + <exclude>pangox.h</exclude> + <exclude>pangox.c</exclude> + <exclude>pangoxft.h</exclude> + <exclude>pangoxft-font.c</exclude> + <exclude>pangoxft-font.h</exclude> + <exclude>pangoxft-fontmap.c</exclude> + <exclude>pangoxft-fontmap.h</exclude> + <exclude>pangoxft-private.h</exclude> + <exclude>pangoxft-render.c</exclude> + <exclude>pangoxft-render.h</exclude> + <exclude>pango-color-table.h</exclude> + <exclude>pango-impl-utils.h</exclude> + <exclude>pango-language-sample-table.h</exclude> + <exclude>pango-script-lang-table.h</exclude> + <exclude>pango-script-table.h</exclude> </directory> </namespace> </library> |