On Fri, 15 Jan 2010 21:18:11 +0100
Jiří Zárevúcky <zarevucky.j...@gmail.com> wrote:

> pancake píše v Pá 15. 01. 2010 v 08:42 +0100:
> > Is there a way to define them? I need it to solve some warnings for  
> > the vapis describing some C functions accepting const char* as argument.
> > 
> > As I see in the compiler source is that it is not supported. Only for  
> > struct or class definitions with [Immutable].
> > 
> 
> Right, it isn't at the moment as far as I know.
> 
> > Are there plans to support it for variables?if it is just to handle  
> > function signatures correctly..
> > 
> 
> I'm all for it. [Immutable] attribute for parameters would do great IMO.
> Or perhaps immutable keyword as a type modifier? That would allow
> binding some non-trivial array types, but I'm not sure whether that's
> necessary.

I have some warnings related to this in the radare2 vapi bindings.

For example, you have a function that returns a const buffer, which is
contained in a read-only section. If you get this buffer from vala, there's
no way to represent that situation, so you are asigning a const buffer to
a non-const buffer which results in a warning and the possibility to try
to modify this buffer which shouldnt be permitted.

I also like the 'immutable' keyword, but I think that Jürg said that he
prefered [Immutable] attribute before the variable name.

int write (int fd, [Immutable] void *buffer, int length);
int write (int fd, immutable void *buffer, int length);

for me, the second form is nicer, but this forces to create a new keyword
which is probably undesired, but if you try to use attributes somewhere
else than before a struct, class or method definition you get an error,
so it will not be backward compatible. 

For methods like this:

   immutable string get_description ();

the compiler should understand that the returned string shouldnt be modified,
so it doesnt requires to be freed and cannot be modified. Something like
a weak or unowned one, but with the property that no write operations can
be done on it.


--pancake
_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to