gir2pascal

From Lazarus wiki
Revision as of 00:17, 19 July 2022 by Maxim (talk | contribs) (gir2pascal was imported to Lazarus source tree)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

About

gir2pascal is a program to convert gobject-introspection (*.gir) xml files into into Pascal files which can be compiled (hopefully) without modification.

More information about gobject-introspection technology can be found here: http://live.gnome.org/GObjectIntrospection

Some of the features of gir2pascal are:

  • Converts the .gir file used as an argument into a .pas file
  • Also converts any .gir files required into .pas files.
  • GObject's are mapped to pascal objects (not classes) for easier use.
  • Creating an instance of an object is done through Foo := TSomeGObjectType.new(Parameters).
  • Can currently generate bindings for gtk3, glib2, atk1, pango1 and webkit without the resulting files needing to be modified to be compiled and linked.
  • Many other .gir files may work as well
  • Can create test units that help verify the conversion is correct.

Some limitations in generated code

  • The objects are just memory mapped to the C structs that are allocated.
  • The pascal new and dispose functions cannot be used with the objects.
  • You cannot create a new object type that inherits the generated objects. (Technically possible if you don't add any additional fields or virtual methods)
  • The objects created cannot wrap the c varargs methods. However the flat functions with varargs are available as before.

gir2pascal is currently being used to generate the Gtk+3 bindings for pascal.

License

GPL-2.0

Author

Andrew Haines

Email: (andrewd207 at aol dot com)

If you find this program useful you can donate with paypal here.

Source code

Since Lazarus 2.3, this tool is part of Lazarus source code tree and located in tools/gir2pascal directory.

Historic sources are located in Lazarus-CCR SVN. Later the tool has received maintenance on GitHub by Bnortmann (talk) and finally was imported from his repository into Lazarus source tree.