On Mon, Dec 27, 2010 at 13:46:47 -0800, Anatol Pomozov wrote:
> Hi,
> 
> I have a simple Vala program
> 
> public struct Struct { string name; }
> public enum Type { STRUCT }
> 
> [...]
> The problem here a name clash in generated Vala code - TYPE_STRUCT
> both generated as type of Struct
> 
> #define TYPE_STRUCT (struct_get_type ())
> 
> and as a enum value
> 
> typedef enum  {
>     TYPE_STRUCT
> } Type;
> 
> what is the best way to avoid such clashes?

Well, it depends on whether you are writing a library or an application.

For library the API should be usable from C, so best way is just to avoid
calling the enum 'Type'. For an application the C names don't matter though,
so you can just tell vala to use different one in C.

> Is it possible to change enum names to something else.

Try using the [CCode(cprefix=...)] annotation. You'll find examples in the
.vapi files. It's normally used to tell vala how externally provided things
are called, but it should work for renaming things generated by vala too.

> I can change enum name from Type to something else e.g. RecordType, but
> I would like to know if there is a better solution.

As I say, it depends on whether somebody will be using the API from C or not.
If they will, rename the type. If not, rename the members with cprefix.

-- 
                                                 Jan 'Bulb' Hudec <[email protected]>
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to