2007-10-19 Jürg Billeter <j@bitron.ch>
+ * vala/valaenum.vala: support Flags attribute
+ * vala/valainterfacewriter.vala: support Flags and ErrorDomain
+ attributes for enums and add `break' to keyword list
+
+2007-10-19 Jürg Billeter <j@bitron.ch>
+
* vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata: add ellipsis
attribute for some functions, patch by Andrea Del Signore
* vapi/gstreamer-0.10.vapi: regenerated
*/
public class Vala.Enum : DataType {
/**
+ * Specifies whether this is a flags enum.
+ */
+ public bool is_flags { get; set; }
+
+ /**
* Specifies whether this enum represents an error domain.
*/
public bool error_domain { get; set; }
foreach (Attribute a in attributes) {
if (a.name == "CCode") {
process_ccode_attribute (a);
+ } else if (a.name == "Flags") {
+ is_flags = true;
} else if (a.name == "ErrorDomain") {
error_domain = true;
}
}
write_string ("[CCode (cprefix = \"%s\", cheader_filename = \"%s\")]".printf (en.get_cprefix (), cheaders));
+ if (en.is_flags) {
+ write_indent ();
+ write_string ("[Flags]");
+ }
+ if (en.error_domain) {
+ write_indent ();
+ write_string ("[ErrorDomain]");
+ }
+
write_indent ();
write_string ("public enum ");
write_identifier (en.name);
}
private void write_identifier (string! s) {
- if (s == "base" || s == "class" ||s == "construct" ||
- s == "delegate" || s == "do" || s == "foreach" ||
- s == "in" || s == "interface" || s == "lock" ||
- s == "namespace" || s == "new" || s == "out" ||
- s == "ref" || s == "signal") {
+ if (s == "base" || s == "break" || s == "class" ||
+ s == "construct" || s == "delegate" || s == "do" ||
+ s == "foreach" || s == "in" || s == "interface" ||
+ s == "lock" || s == "namespace" || s == "new" ||
+ s == "out" || s == "ref" || s == "signal") {
stream.putc ('@');
}
write_string (s);