Support the UN World Food Programme

GObject Builder

[What is it] [Documentation] [News] [Mailing List] [Requirements] [Download] [Links]

What is it

GOB (GOB2 anyway) is a preprocessor for making GObjects with inline C code so that generated files are not edited. Syntax is inspired by Java and Yacc or Lex. The implementation is intentionally kept simple, and no C actual code parsing is done.


Also since every project has a screenshot, here's one of gob. It is a screenshot of gob1 and not of gob2, but you get the idea.


The documentation for gob is it's man page. You can look at it here as HTML. (You can also look at the manual for version 1 of gob if you want to) That should explain all that you need to know to create gob objects.

There is a Japanese version of the manpage available.

For examples, you might want to check out gtk-button-count.gob and my-person.gob. The first is a derivation of GtkButton to count the number of clicks. The other is an imaginary object for storing persons.

For an example of creating BonoboObjects with gob, see GNOME_Foo_SomeInterface.idl and foo-some-interface.gob.

The old version 1 of gob will make GTK+ 1 objects (with some support for GTK+ 2). You should really migrate your objects to gob2 however.


For new features read gob2 NEWS or if you are still interested in gob1, gob1 NEWS

December 14th 2013: Release gob2 2.0.20

Couple of pending patches: GTK3 support, names of properties and signals.

December 18th 2012: Release gob2 2.0.19

Fixes, see NEWS above.

January 6th 2011: Release gob2 2.0.18

Add ctop (works like alltop but only in the C file), build fixes for cygwin, and some minor fixes (see the NEWS file for credits and details)

April 2nd 2010: Release gob2 2.0.17

Fix segfault in the destroy, finalize, construct override support (debian #574542). Fix usage of strcpy (Ding-Yi Chen). Default minimums for floats are correct (Marcel Wagner). Deal with carriage returns in input files.

July 21 2009: Release gob2 2.0.16

Function attributes; simple destroy, finalize, construct override support; afterdecls C block; minor other fixes/improvements.

Nov 20 2007: Release gob2 2.0.15

Couple of minor fixes.

Jan 5 2006: Release gob2 2.0.14

Major segfault fixed, whoops!

Dec 16th 2005: Release gob2 2.0.13

A bunch of patches applied. See the NEWS.

July 23rd 2005:

Unfortunately it seems that the libglade support is not really working correctly. Also unfortunately I'm busy for the next 2 weeks so I'll have to look at it when I resurface. See the mailing list archive for patches and discussion.

July 22nd 2005: Release gob2 2.0.12

Add libglade support and a bunch of other patches applied. See the NEWS.

October 26th 2004: Release gob2 2.0.11

The 2.0.10 version was broken if you used overrides and privates at the same time. This release fixes compilation of such objects.

September 22nd 2004: Release gob2 2.0.10

Bunch of new features and fixes, see the NEWS.

July 29th 2004: Check out DWI

DWI is an environment for creating data driven application with minimal amount of coding. Now there is example gob code in the Bicycle Calorie Calculator example which shows how to easily connect a gui created in glade to an object created in gob. You will notice that pretty much the only real code is the actual logic of the calculation.

July 19th 2004: Release gob2 2.0.9

Generated code warning fixes, stuff should compile with a very pedantic gcc warning set.

Jun 11th 2004: Release gob2 2.0.8

Just some documentation fixes, a new option for where to put the output and the boxed_type was fixed.

Mar 30th 2004: Release gob2 2.0.7

May 20th 2003: Release gob2 2.0.6

Jan 16th 2003: Release gob2 2.0.5

Dec 13th 2002: Release gob2 2.0.4

There was also a 2.0.3 release some time ago about which I forgot on here, look for the news in the NEWS file above.

Aug 20th 2002: Release gob2 2.0.2

July 17th 2002: Release gob2 2.0.1

July 15th 2002: Release gob2 2.0.0

May 28th 2002: Release gob2 1.99.3

Feb 1st 2002: Release gob2 1.99.2
A few new things, it took quite a bit. News:

Feb 1st 2002: Release gob 1.0.12

Sep 30th 2001: Release 1.99.1
Well I finally announced 1.0.11, and I also released 1.99.1. That's the new GObject port of gob, it's called: gob2. You can install it side by side with 1.0.x gob, since the binary is "gob2" and not "gob". It supports most of the normal GObject properties. It doesn't yet support interfaces (though you CAN use them by just overriding the get_type method).

Sep 30th 2001: Release 1.0.11
New things:

This is a maintenance release with the biggest feature that it again works with the newest GTK+2 releases (1.3.9). That is, it can generate objects that will just compile with new GTK and glib. Very little code change is needed to port to new GTK+. However gob1 does not take advantage of some of the new features of GObject. For this purpose I'm working on gob2, which is an updated version, with a slightly different syntax, that works directly with GObjects and doesn't thus require GTK+2, just glib2. I will make a release of that shortly.

June 30th 2001: Release 1.0.10
New things:

April 21st 2001: Release 1.0.9
New things:

Also note I made the web version of the man page look much nicer with some Perl magic.

April 12th 2001: Release 1.0.8
New things:

February 25th 2001: Release 1.0.7
New things:

This release adds the possibility to override the get_type function, which can be used to create BonoboXObject's. I plan to support BonoboXObjects more directly in future versions, but at least with this version you CAN make them. I've also tried to compile GTK+ HEAD objects and apparently it still works correctly.

February 11th 2001: Release 1.0.6
New things:

Unfortunately this version won't work with newest gtk1.3 snapshots, but that's in the works. This is just to get a minor couple of things out that has brewed over the last few months. A new release will be forthcoming soon with some more needed updating.

September 10th 2000: Release 1.0.5
New things:

Apparently gob is getting very stable. I haven't had any major bugs recently. It is also at a point of functionality where I think it has just enough for the version 1 release. At some point I will start working on version 2 which should be pure GObject implementation and most likely incompatible with version 1 of gob. But version 1 of gob will continue to work with both GTK 1.2 and the upcoming GTK 2.0, nothing in that will change.

July 23rd 2000: Release 1.0.4
New things:

I would greatly urge everyone to upgrade. The segfault in finalize can be particularly nasty.

July 6th 2000: Release 1.0.3
New things:

Note that the GTK 2.0 support is quite experimental. It works around the obvious things and makes the objects compile with the new system. They don't really take advantage of any GObject features and GTK is still required. Doing a GObject based gob is more of a job for gob2 as it will require quite a bit of rethinking of the syntax and some of the internals.

June 30th 2000: Release 1.0.2
New things:

The big change here is the string change. When you use gtk_object_get on an argument that had used stringlink, you will need to free the result. This is the correct GTK+ behavior. Also this time I have both alpha and i386 rpms on the site.

June 10th 2000: Added an i386 rpm of 1.0.1 and removed binary(deb/rpm) packages of old releases. The old tar files are still there.

June 7th 2000: Release 1.0.1
New things:

May 31st 2000: Release 1.0.0
New things:

May 20th 2000: Release 0.93.5
New things:

Especially the last change is one to cause problems. What it means is that if the method name my_object_foo conflicts with a function from another library called 'foo' because of it's local short alias. You can declare the method as '_foo'. It will still be 'my_object_foo', but the short name alias will be '_foo'. Thus I'm postponing 1.0 until next release in about a week or two.

Apr 29th 2000: Release 0.93.4
New things:

This should be the final release before 1.0, If everything goes well I'll release 1.0 in a week or two.

Apr 15th 2000: Released 0.93.3
This is a release with assorted bugfixes

Apr 2nd 2000: Released 0.93.2
New things:

Mailing List

To subscribe to the GOB mailing list, send a message to with a subject of "subscribe gob-list". Then to send mail to the list you can send to

Here is the archive of this list


GOB requires Lex, Yacc and glib. If you make any GTK+ objects, you'll of course also need GTK+. If you make BonoboObjects you'll require bonobo.


The official download site is at:
(note that although it is an http link you can also access that same site as ftp)

GOB2 Tarball 2.0.20
RPMs (RedHat packages) OUT OF DATE!
DEBs (Debian packages) OUT OF DATE!

If you want the old 1.0 version of gob for making GTK+ 1 (with some support for GTK+ 2) objects get this:

GOB Tarball 1.0.12


Links to GOB related sites, examples, etc...


Valid HTML 4.01!