X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/714b58ab4606ed4d40cec3702cb378938f8c883f..4f09fcd75bb0057d90c7431f7db57ca2c5a6c028:/doc/gob.1.in diff --git a/doc/gob.1.in b/doc/gob.1.in index 81aa107..518e358 100644 --- a/doc/gob.1.in +++ b/doc/gob.1.in @@ -466,11 +466,11 @@ is just like get { ARG = self->foo; } set { - if(self->foo) + if(ARG != NULL) + gtk_object_ref(ARG); + if(self->foo != NULL) gtk_object_unref(self->foo); self->foo = ARG; - if(self->foo) - gtk_object_ref(self->foo); } .fi @@ -828,7 +828,8 @@ compile with a C++ compiler. .PP The get_type is not really a method, but a function which initializes your object. Recently objects appeared which require you to make a custom -get_type function (BonoboXObject currently). So in 1.0.7 it is now possible +get_type function (BonoboXObject currently, see next section for direct +BonoboXObject support). So in 1.0.7 it is now possible to override this function. To do so, just define a new public method called get_type, with no arguments. Example: .nf @@ -842,6 +843,45 @@ get_type, with no arguments. Example: .fi +.SH DIRECT BonoboXObject SUPPORT +.PP +If you want to build a BonoboXObject class gob has direct support for these +classes since 1.0.9. Just create a new object that derives from +Bonobo:X:Object. Then use a "BonoboX" class flag with the interface name as an +argument. The interface name should be as you would type it in C, that is with +underscores as namespace separators. Then you add the methods (using exact +same names as in the idl file) and prepend those methods with a BonoboX +keyword. For example imagine you have an interface GNOME/Foo/SomeInterface, +with a method fooBar that takes a single string: +.nf + + class Foo:Some:Interface from Bonobo:X:Object + (BonoboX GNOME_Foo_SomeInterface) { + + BonoboX + private void + fooBar (PortableServer_Servant servant, + const CORBA_char *string, + CORBA_Environment *ev) + { + Self *self = SELF (bonobo_object_from_servant (servant)); + + /* your code here */ + } + + /* rest of class */ + } + +.fi +Note that the implementation method can be private, in fact that's probably +a good idea to do. It won't work to make this a signal, it can however +be a virtual. Note that the method prototype must match the one from the +interface header file, or you will get a bad assignment warning. You should +check the header file generated by orbit-idl and see the epv structure +for the correct prototypes if you can't figure them out from the idl itself. +Also note that the first argument is not "self", but the servant and you must +use bonobo_object_from_servant function to get the actual object pointer. + .SH IDENTIFIER CONFLICTS .PP Gob will need to define some local variables and functions in the generated @@ -1028,8 +1068,7 @@ that's about as far as I can really take it and even that is problematic. Basically, if you use gob, just don't use the C preprocessor too extensively. .PP Comments will not get through to the generated files unless inside C code. -This makes using something like gtk-doc harder. However I'm planning to -fix this somehow. +This is not the case for gtk-doc style comments which are supported. .PP The short name aliases are actually implemented as pointers to functions. Thus if you want to get the pointer of a function using the short name alias you