[gst-devel] GstStructure mutability question

José Alburquerque jaalburquerque at cox.net
Mon Feb 11 22:07:14 CET 2008


David Schleef wrote:
> On Sun, Feb 10, 2008 at 09:41:20AM -0500, José Alburquerque wrote:
>   
>> In trying to provide C++ bindings, I'm encountering a few difficulties 
>> with GstStructure immutability because in C++, inadvertently, an object 
>> such as a GstCaps may be referenced more than once by a simple C++ 
>> statement (by our design, of course) such as:
>>
>> caps->set_simple("field1", value1)->set_simple("field2", 
>> value2)->set_simple("field3", val3);
>>     
>
> Could you come up with a better example?  You've changed the return
> value of set_simple, which seems like a dangerous path to follow for
> a language wrapper.
>
>
>
> dave...
>
>
>   
A better example would be what happens with our RefPtr wrapper class 
(which wraps objects and automatically increments/decrements their 
references) and when it is "cast" (see this bug report I filed hoping 
for some possible solution: 
http://bugzilla.gnome.org/show_bug.cgi?id=510301).

The reason we want  to design our Caps::set_simple() method to return a 
"pointer" (in fact it is our RefPtr wrapper class) to the caps is to 
allow the "chain of sets" you see above.  Your gst_caps_set_simple() 
returns void, so I don't really see where the danger would be.  There is 
a difference, of course, and that would be in the usage syntax.  We're 
debating whether to use this format or something else, but right now, we 
would really like to use it because due to our effort to be type safe, 
we are not implementing methods with variable arguments and this would 
make it easier for developers to "set" a series of values in 
GstStructure fields of the GstCaps (in C++).

-Jose




More information about the gstreamer-devel mailing list