vala r2265 - in trunk: . compiler gobject vala vapi vapigen



Author: juergbi
Date: Sun Jan  4 14:55:19 2009
New Revision: 2265
URL: http://svn.gnome.org/viewvc/vala?rev=2265&view=rev

Log:
2009-01-04  JÃrg Billeter  <j bitron ch>

	* vala/valacodewriter.vala:
	* vala/valadelegate.vala:
	* vala/valafield.vala:
	* vala/valaformalparameter.vala:
	* vala/valamethod.vala:

	Replace [NoArrayLength] by [CCode (array_length = false)], which
	can also be applied to single parameters, fixes bug 532486

	* gobject/valaccodecompiler.vala:
	* compiler/valacompiler.vala:
	* vapi/glib-2.0.vapi:
	* vapigen/valagidlparser.vala:
	* vapigen/valavapigen.vala:

	Adapt to attribute changes


Modified:
   trunk/ChangeLog
   trunk/compiler/valacompiler.vala
   trunk/gobject/valaccodecompiler.vala
   trunk/vala/valacodewriter.vala
   trunk/vala/valadelegate.vala
   trunk/vala/valafield.vala
   trunk/vala/valaformalparameter.vala
   trunk/vala/valamethod.vala
   trunk/vapi/glib-2.0.vapi
   trunk/vapigen/valagidlparser.vala
   trunk/vapigen/valavapigen.vala

Modified: trunk/compiler/valacompiler.vala
==============================================================================
--- trunk/compiler/valacompiler.vala	(original)
+++ trunk/compiler/valacompiler.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,6 @@
 /* valacompiler.vala
  *
- * Copyright (C) 2006-2008  JÃrg Billeter
+ * Copyright (C) 2006-2009  JÃrg Billeter
  * Copyright (C) 1996-2002, 2004, 2005, 2006 Free Software Foundation, Inc.
  *
  * This library is free software; you can redistribute it and/or
@@ -27,12 +27,15 @@
 	static string basedir;
 	static string directory;
 	static bool version;
-	[NoArrayLength ()]
+	[CCode (array_length = false)]
+	[NoArrayLength]
 	static string[] sources;
-	[NoArrayLength ()]
+	[CCode (array_length = false)]
+	[NoArrayLength]
 	static string[] vapi_directories;
 	static string library;
-	[NoArrayLength ()]
+	[CCode (array_length = false)]
+	[NoArrayLength]
 	static string[] packages;
 	static string target_glib;
 
@@ -47,6 +50,7 @@
 	static bool non_null_experimental;
 	static bool disable_dbus_transformation;
 	static string cc_command;
+	[CCode (array_length = false)]
 	[NoArrayLength]
 	static string[] cc_options;
 	static string dump_tree;

Modified: trunk/gobject/valaccodecompiler.vala
==============================================================================
--- trunk/gobject/valaccodecompiler.vala	(original)
+++ trunk/gobject/valaccodecompiler.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,6 @@
 /* valaccodecompiler.vala
  *
- * Copyright (C) 2007-2008  JÃrg Billeter
+ * Copyright (C) 2007-2009  JÃrg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -49,7 +49,7 @@
 	 * @param context a code context
 	 */
 	[NoArrayLength]
-	public void compile (CodeContext context, string? cc_command, string[] cc_options) {
+	public void compile (CodeContext context, string? cc_command, [CCode (array_length = false)] string[] cc_options) {
 		string pc = "pkg-config --cflags";
 		if (!context.compile_only) {
 			pc += " --libs";

Modified: trunk/vala/valacodewriter.vala
==============================================================================
--- trunk/vala/valacodewriter.vala	(original)
+++ trunk/vala/valacodewriter.vala	Sun Jan  4 14:55:19 2009
@@ -607,7 +607,7 @@
 		bool custom_cname = (f.get_cname () != f.get_default_cname ());
 		bool custom_ctype = (f.get_ctype () != null);
 		bool custom_cheaders = (f.parent_symbol is Namespace);
-		if (custom_cname || custom_ctype || custom_cheaders) {
+		if (custom_cname || custom_ctype || custom_cheaders || (f.no_array_length && f.field_type is ArrayType)) {
 			write_indent ();
 			write_string ("[CCode (");
 
@@ -641,12 +641,15 @@
 				write_string ("cheader_filename = \"%s\"".printf (cheaders));
 			}
 
-			write_string (")]");
-		}
+			if (f.no_array_length && f.field_type is ArrayType) {
+				if (custom_cname || custom_ctype || custom_cheaders) {
+					write_string (", ");
+				}
 
-		if (f.no_array_length && f.field_type is ArrayType) {
-			write_indent ();
-			write_string ("[NoArrayLength]");
+				write_string ("array_length = false");
+			}
+
+			write_string (")]");
 		}
 
 		write_indent ();
@@ -714,6 +717,10 @@
 				ccode_params.append_printf ("%stype = \"%s\"", separator, param.ctype);
 				separator = ", ";
 			}
+			if (param.no_array_length && param.parameter_type is ArrayType) {
+				ccode_params.append_printf ("%sarray_length = false", separator);
+				separator = ", ";
+			}
 			if (!float_equal (param.carray_length_parameter_position, i + 0.1)) {
 				ccode_params.append_printf ("%sarray_length_pos = %g", separator, param.carray_length_parameter_position);
 				separator = ", ";
@@ -827,19 +834,6 @@
 			write_indent ();
 			write_string ("[ReturnsModifiedPointer]");
 		}
-		if (m.no_array_length) {
-			bool array_found = (m.return_type is ArrayType);
-			foreach (FormalParameter param in m.get_parameters ()) {
-				if (param.parameter_type is ArrayType) {
-					array_found = true;
-					break;
-				}
-			}
-			if (array_found) {
-				write_indent ();
-				write_string ("[NoArrayLength]");
-			}
-		}
 
 		var ccode_params = new StringBuilder ();
 		var separator = "";
@@ -866,6 +860,10 @@
 			ccode_params.append_printf ("%sinstance_pos = %g", separator, m.cinstance_parameter_position);
 			separator = ", ";
 		}
+		if (m.no_array_length && m.return_type is ArrayType) {
+			ccode_params.append_printf ("%sarray_length = false", separator);
+			separator = ", ";
+		}
 		if (!float_equal (m.carray_length_parameter_position, -3)) {
 			ccode_params.append_printf ("%sarray_length_pos = %g", separator, m.carray_length_parameter_position);
 			separator = ", ";

Modified: trunk/vala/valadelegate.vala
==============================================================================
--- trunk/vala/valadelegate.vala	(original)
+++ trunk/vala/valadelegate.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,6 @@
 /* valadelegate.vala
  *
- * Copyright (C) 2006-2008  JÃrg Billeter
+ * Copyright (C) 2006-2009  JÃrg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -63,20 +63,10 @@
 	public double cdelegate_target_parameter_position { get; set; }
 
 	/**
-	 * Specifies whether the array length should implicitly be passed
-	 * if the parameter type is an array.
+	 * Specifies whether the array length should be returned implicitly
+	 * if the return type is an array.
 	 */
-	public bool no_array_length {
-		get {
-			return _no_array_length;
-		}
-		set {
-			_no_array_length = value;
-			foreach (FormalParameter param in parameters) {
-				param.no_array_length = value;
-			}
-		}
-	}
+	public bool no_array_length { get; set; }
 
 	private Gee.List<TypeParameter> type_parameters = new ArrayList<TypeParameter> ();
 
@@ -84,7 +74,6 @@
 	private string cname;
 
 	private DataType _return_type;
-	private bool _no_array_length;
 
 	/**
 	 * Creates a new delegate.
@@ -121,9 +110,6 @@
 	 * @param param a formal parameter
 	 */
 	public void add_parameter (FormalParameter param) {
-		if (no_array_length) {
-			param.no_array_length = true;
-		}
 		// default C parameter position
 		param.cparameter_position = parameters.size + 1;
 		param.carray_length_parameter_position = param.cparameter_position + 0.1;
@@ -227,6 +213,9 @@
 		if (a.has_argument ("instance_pos")) {
 			cinstance_parameter_position = a.get_double ("instance_pos");
 		}
+		if (a.has_argument ("array_length")) {
+			no_array_length = !a.get_bool ("array_length");
+		}
 		if (a.has_argument ("array_length_pos")) {
 			carray_length_parameter_position = a.get_double ("array_length_pos");
 		}
@@ -248,8 +237,6 @@
 		foreach (Attribute a in attributes) {
 			if (a.name == "CCode") {
 				process_ccode_attribute (a);
-			} else if (a.name == "NoArrayLength") {
-				no_array_length = true;
 			}
 		}
 	}

Modified: trunk/vala/valafield.vala
==============================================================================
--- trunk/vala/valafield.vala	(original)
+++ trunk/vala/valafield.vala	Sun Jan  4 14:55:19 2009
@@ -178,6 +178,9 @@
 				add_cheader_filename (filename);
 			}
 		}
+		if (a.has_argument ("array_length")) {
+			no_array_length = !a.get_bool ("array_length");
+		}
 		if (a.has_argument ("array_length_cname")) {
 			set_array_length_cname (a.get_string ("array_length_cname"));
 		}
@@ -190,8 +193,6 @@
 		foreach (Attribute a in attributes) {
 			if (a.name == "CCode") {
 				process_ccode_attribute (a);
-			} else if (a.name == "NoArrayLength") {
-				no_array_length = true;
 			}
 		}
 	}

Modified: trunk/vala/valaformalparameter.vala
==============================================================================
--- trunk/vala/valaformalparameter.vala	(original)
+++ trunk/vala/valaformalparameter.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,7 @@
 /* valaformalparameter.vala
  *
- * Copyright (C) 2006-2008  JÃrg Billeter, Raffaele Sandrini
+ * Copyright (C) 2006-2009  JÃrg Billeter
+ * Copyright (C) 2006-2008  Raffaele Sandrini
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -60,7 +61,7 @@
 	public Expression default_expression { get; set; }
 	
 	/**
-	 * Specifies whether the array length should implicitly be passed
+	 * Specifies whether the array length should be passed implicitly
 	 * if the parameter type is an array.
 	 */
 	public bool no_array_length { get; set; }
@@ -139,6 +140,9 @@
 		if (a.has_argument ("type")) {
 			ctype = a.get_string ("type");
 		}
+		if (a.has_argument ("array_length")) {
+			no_array_length = !a.get_bool ("array_length");
+		}
 		if (a.has_argument ("array_length_pos")) {
 			carray_length_parameter_position = a.get_double ("array_length_pos");
 		}

Modified: trunk/vala/valamethod.vala
==============================================================================
--- trunk/vala/valamethod.vala	(original)
+++ trunk/vala/valamethod.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,7 @@
 /* valamethod.vala
  *
- * Copyright (C) 2006-2008  JÃrg Billeter, Raffaele Sandrini
+ * Copyright (C) 2006-2009  JÃrg Billeter
+ * Copyright (C) 2006-2008  Raffaele Sandrini
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -176,20 +177,10 @@
 	public double cdelegate_target_parameter_position { get; set; }
 
 	/**
-	 * Specifies whether the array length should implicitly be passed
-	 * if the parameter type is an array.
+	 * Specifies whether the array length should be returned implicitly
+	 * if the return type is an array.
 	 */
-	public bool no_array_length {
-		get {
-			return _no_array_length;
-		}
-		set {
-			_no_array_length = value;
-			foreach (FormalParameter param in parameters) {
-				param.no_array_length = value;
-			}
-		}
-	}
+	public bool no_array_length { get; set; }
 
 	/**
 	 * Specifies whether this method expects printf-style format arguments.
@@ -208,7 +199,6 @@
 	private string cname;
 	private string _vfunc_name;
 	private string _sentinel;
-	private bool _no_array_length;
 	private Gee.List<Expression> preconditions = new ArrayList<Expression> ();
 	private Gee.List<Expression> postconditions = new ArrayList<Expression> ();
 	private DataType _return_type;
@@ -240,9 +230,6 @@
 	 * @param param a formal parameter
 	 */
 	public void add_parameter (FormalParameter param) {
-		if (no_array_length) {
-			param.no_array_length = true;
-		}
 		// default C parameter position
 		param.cparameter_position = parameters.size + 1;
 		param.carray_length_parameter_position = param.cparameter_position + 0.1;
@@ -375,6 +362,9 @@
 		if (a.has_argument ("instance_pos")) {
 			cinstance_parameter_position = a.get_double ("instance_pos");
 		}
+		if (a.has_argument ("array_length")) {
+			no_array_length = !a.get_bool ("array_length");
+		}
 		if (a.has_argument ("array_length_pos")) {
 			carray_length_parameter_position = a.get_double ("array_length_pos");
 		}
@@ -397,8 +387,6 @@
 				returns_modified_pointer = true;
 			} else if (a.name == "FloatingReference") {
 				return_type.floating_reference = true;
-			} else if (a.name == "NoArrayLength") {
-				no_array_length = true;
 			} else if (a.name == "PrintfFormat") {
 				printf_format = true;
 			}

Modified: trunk/vapi/glib-2.0.vapi
==============================================================================
--- trunk/vapi/glib-2.0.vapi	(original)
+++ trunk/vapi/glib-2.0.vapi	Sun Jan  4 14:55:19 2009
@@ -717,15 +717,14 @@
 	public string escape (string exceptions);
 	[CCode (cname = "g_strcompress")]
 	public string compress ();
-	[CCode (cname = "g_strsplit")]
+	[CCode (cname = "g_strsplit", array_length = false)]
 	[NoArrayLength]
 	public string[] split (string delimiter, int max_tokens = 0);
-	[CCode (cname = "g_strsplit_set")]
-	[NoArrayLength]
+	[CCode (cname = "g_strsplit_set", array_length = false)]
 	public string[] split_set (string delimiters, int max_tokens = 0);
 	[CCode (cname = "g_strjoinv")]
 	[NoArrayLength]
-	public static string joinv (string separator, string[] str_array);
+	public static string joinv (string separator, [CCode (array_length = false)] string[] str_array);
 	[CCode (cname = "g_strjoin")]
 	public static string join (string separator, ...);
 	[CCode (cname = "g_strnfill")]
@@ -1066,7 +1065,7 @@
 		public bool wait (Cond cond, Mutex mutex);
 		public bool prepare (out int priority);
 		public int query (int max_priority, out int timeout_, PollFD[] fds);
-		[NoArrayLength]
+		[CCode (array_length = false)]
 		public int check (int max_priority, PollFD[] fds, int n_fds);
 		public void dispatch ();
 		public void set_poll_func (PollFunc func);
@@ -1505,8 +1504,7 @@
 
 	/* String Utility Functions */
 
-	[NoArrayLength]
-	public uint strv_length (string[] str_array);
+	public uint strv_length ([CCode (array_length = false)] string[] str_array);
 
 	[CCode (cname = "errno", cheader_filename = "errno.h")]
 	public int errno;
@@ -1549,7 +1547,7 @@
 		public static size_t encode_close (bool break_lines, char* _out, ref int state, ref int save);
 		public static string encode (uchar[] data);
 		public static size_t decode_step (char[] _in, uchar* _out, ref int state, ref uint save);
-		[NoArrayLength]
+		[CCode (array_length = false)]
 		public static uchar[] decode (string text, out size_t out_len);
 	}
 
@@ -1569,11 +1567,9 @@
 	public class Checksum {
 		public Checksum (ChecksumType checksum_type);
 		public Checksum copy ();
-		[NoArrayLength]
-		public void update (uchar[] data, size_t length);
+		public void update ([CCode (array_length = false)] uchar[] data, size_t length);
 		public weak string get_string ();
-		[NoArrayLength]
-		public void get_digest (uint8[] buffer, ref size_t digest_len);
+		public void get_digest ([CCode (array_length = false)] uint8[] buffer, ref size_t digest_len);
 		[CCode (cname = "g_compute_checksum_for_data")]
 		public static string compute_for_data (ChecksumType checksum_type, uchar[] data);
 		[CCode (cname = "g_compute_checksum_for_string")]
@@ -1750,12 +1746,10 @@
 	[CCode (copy_function = "g_rand_copy", free_function = "g_rand_free")]
 	public class Rand {
 		public Rand.with_seed (uint32 seed);
-		[NoArrayLength ()]
-		public Rand.with_seed_array (uint32[] seed, uint seed_length);
+		public Rand.with_seed_array ([CCode (array_length = false)] uint32[] seed, uint seed_length);
 		public Rand ();
 		public void set_seed (uint32 seed);
-		[NoArrayLength ()]
-		public void set_seed_array (uint32[] seed, uint seed_length);
+		public void set_seed_array ([CCode (array_length = false)] uint32[] seed, uint seed_length);
 		public bool boolean ();
 		[CCode (cname = "g_rand_int")]
 		public uint32 next_int ();
@@ -1793,8 +1787,7 @@
 		public static bool set_variable (string variable, string value, bool overwrite);
 		[CCode (cname = "g_unsetenv")]
 		public static void unset_variable (string variable);
-		[CCode (cname = "g_listenv")]
-		[NoArrayLength]
+		[CCode (cname = "g_listenv", array_length = false)]
 		public static string[] list_variables ();
 		[CCode (cname = "g_get_user_name")]
 		public static weak string get_user_name ();
@@ -1808,9 +1801,10 @@
 		public static weak string get_user_config_dir ();
 		[CCode (cname = "g_get_user_special_dir")]
 		public static weak string get_user_special_dir (UserDirectory directory);
-		[CCode (cname = "g_get_system_data_dirs"), NoArrayLength]
+		[CCode (cname = "g_get_system_data_dirs", array_length = false)]
+		[NoArrayLength]
 		public static weak string[] get_system_data_dirs ();
-		[CCode (cname = "g_get_system_config_dirs"), NoArrayLength]
+		[CCode (cname = "g_get_system_config_dirs")]
 		public static weak string[] get_system_config_dirs ();
 		[CCode (cname = "g_get_host_name")]
 		public static weak string get_host_name ();
@@ -2089,12 +2083,9 @@
 
 	[CCode (lower_case_cprefix = "g_")]
 	namespace Process {
-		[NoArrayLength ()]
-		public static bool spawn_async_with_pipes (string? working_directory, string[] argv, string[]? envp, SpawnFlags _flags, SpawnChildSetupFunc? child_setup, out Pid child_pid, out int standard_input = null, out int standard_output = null, out int standard_error = null) throws SpawnError;
-		[NoArrayLength ()]
-		public static bool spawn_async (string? working_directory, string[] argv, string[]? envp, SpawnFlags _flags, SpawnChildSetupFunc? child_setup, out Pid child_pid) throws SpawnError;
-		[NoArrayLength ()]
-		public static bool spawn_sync (string? working_directory, string[] argv, string[]? envp, SpawnFlags _flags, SpawnChildSetupFunc? child_setup, out string standard_output = null, out string standard_error = null, out int exit_status = null) throws SpawnError;
+		public static bool spawn_async_with_pipes (string? working_directory, [CCode (array_length = false)] string[] argv, [CCode (array_length = false)] string[]? envp, SpawnFlags _flags, SpawnChildSetupFunc? child_setup, out Pid child_pid, out int standard_input = null, out int standard_output = null, out int standard_error = null) throws SpawnError;
+		public static bool spawn_async (string? working_directory, [CCode (array_length = false)] string[] argv, [CCode (array_length = false)] string[]? envp, SpawnFlags _flags, SpawnChildSetupFunc? child_setup, out Pid child_pid) throws SpawnError;
+		public static bool spawn_sync (string? working_directory, [CCode (array_length = false)] string[] argv, [CCode (array_length = false)] string[]? envp, SpawnFlags _flags, SpawnChildSetupFunc? child_setup, out string standard_output = null, out string standard_error = null, out int exit_status = null) throws SpawnError;
 		public static bool spawn_command_line_async (string command_line) throws SpawnError;
 		public static bool spawn_command_line_sync (string command_line, out string standard_output = null, out string standard_error = null, out int exit_status = null) throws SpawnError;
 		[CCode (cname = "g_spawn_close_pid")]
@@ -2347,7 +2338,7 @@
 		public bool get_ignore_unknown_options ();
 		public string get_help (bool main_help, OptionGroup? group);
 		[NoArrayLength]
-		public void add_main_entries (OptionEntry[] entries, string? translation_domain);
+		public void add_main_entries ([CCode (array_length = false)] OptionEntry[] entries, string? translation_domain);
 		public void add_group (OptionGroup# group);
 		public void set_main_group (OptionGroup# group);
 		public weak OptionGroup get_main_group ();
@@ -2396,8 +2387,7 @@
 	[CCode (free_function = "g_option_group_free")]
 	public class OptionGroup {
 		public OptionGroup (string name, string description, string help_description, void* user_data, DestroyNotify? destroy);
-		[NoArrayLength]
-		public void add_entries (OptionEntry[] entries);
+		public void add_entries ([CCode (array_length = false)] OptionEntry[] entries);
 		public void set_parse_hooks (OptionParseFunc pre_parse_func, OptionParseFunc post_parse_hook);
 		public void set_error_hook (OptionErrorFunc error_func);
 		public void set_translate_func (TranslateFunc func, DestroyNotify? destroy_notify);
@@ -2461,12 +2451,12 @@
 		public bool match_full (string str, long string_len = -1, int start_position = 0, RegexMatchFlags match_options = 0, out MatchInfo match_info = null) throws RegexError;
 		public bool match_all (string str, RegexMatchFlags match_options = 0, out MatchInfo match_info = null);
 		public bool match_all_full (string str, long string_len = -1, int start_position = 0, RegexMatchFlags match_options = 0, out MatchInfo match_info = null) throws RegexError;
-		[NoArrayLength]
+		[CCode (array_length = false)]
 		public static string[] split_simple (string pattern, string str, RegexCompileFlags compile_options = 0, RegexMatchFlags match_options = 0);
-		[NoArrayLength]
+		[CCode (array_length = false)]
 		public string[] split (string str, RegexMatchFlags match_options = 0);
-		[NoArrayLength]
-		public bool split_full (string str, long string_len = -1, int start_position = 0, RegexMatchFlags match_options = 0, int max_tokens = 0) throws RegexError;
+		[CCode (array_length = false)]
+		public string[] split_full (string str, long string_len = -1, int start_position = 0, RegexMatchFlags match_options = 0, int max_tokens = 0) throws RegexError;
 		public string replace (string str, long string_len, int start_position, string replacement, RegexMatchFlags match_options = 0) throws RegexError;
 		public string replace_literal (string str, long string_len, int start_position, string replacement, RegexMatchFlags match_options = 0) throws RegexError;
 		public string replace_eval (string str, long string_len, int start_position, RegexMatchFlags match_options = 0, RegexEvalCallback eval, void* user_data) throws RegexError;
@@ -2489,7 +2479,7 @@
 		public bool fetch_pos (int match_num, out int start_pos, out int end_pos);
 		public string fetch_named (string name);
 		public bool fetch_named_pos (string name, out int start_pos, out int end_pos);
-		[NoArrayLength]
+		[CCode (array_length = false)]
 		public string[] fetch_all ();
 	}
 
@@ -2520,8 +2510,7 @@
 		public void get_position (out int line_number, out int char_number);
 	}
 	
-	[NoArrayLength]
-	public delegate void MarkupParserStartElementFunc (MarkupParseContext context, string element_name, string[] attribute_names, string[] attribute_values) throws MarkupError;
+	public delegate void MarkupParserStartElementFunc (MarkupParseContext context, string element_name, [CCode (array_length = false)] string[] attribute_names, [CCode (array_length = false)] string[] attribute_values) throws MarkupError;
 	
 	public delegate void MarkupParserEndElementFunc (MarkupParseContext context, string element_name) throws MarkupError;
 	
@@ -2562,8 +2551,7 @@
 		public KeyFile ();
 		public void set_list_separator (char separator);
 		public bool load_from_file (string file, KeyFileFlags @flags) throws KeyFileError;
-		[NoArrayLength]
-		public bool load_from_dirs (string file, string[] search_dirs, out string full_path, KeyFileFlags @flags) throws KeyFileError;
+		public bool load_from_dirs (string file, [CCode (array_length = false)] string[] search_dirs, out string full_path, KeyFileFlags @flags) throws KeyFileError;
 		public bool load_from_data (string data, ulong length, KeyFileFlags @flags) throws KeyFileError;
 		public bool load_from_data_dirs (string file, out string full_path, KeyFileFlags @flags) throws KeyFileError;
 		public string to_data (out size_t length) throws KeyFileError;

Modified: trunk/vapigen/valagidlparser.vala
==============================================================================
--- trunk/vapigen/valagidlparser.vala	(original)
+++ trunk/vapigen/valagidlparser.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,7 @@
 /* valagidlparser.vala
  *
- * Copyright (C) 2006-2008  JÃrg Billeter, Raffaele Sandrini
+ * Copyright (C) 2006-2009  JÃrg Billeter
+ * Copyright (C) 2006-2008  Raffaele Sandrini
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -1509,6 +1510,10 @@
 						} else if (eval (nv[1]) == "0") {
 							show_param = true;
 						}
+					} else if (nv[0] == "no_array_length") {
+						if (eval (nv[1]) == "1") {
+							p.no_array_length = true;
+						}
 					} else if (nv[0] == "array_length_pos") {
 						set_array_length_pos = true;
 						array_length_pos = eval (nv[1]).to_double ();
@@ -1803,6 +1808,7 @@
 		return field;
 	}
 
+	[CCode (array_length = false)]
 	[NoArrayLength]
 	private string[]? get_attributes (string codenode) {
 		var attributes = codenode_attributes_map.get (codenode);

Modified: trunk/vapigen/valavapigen.vala
==============================================================================
--- trunk/vapigen/valavapigen.vala	(original)
+++ trunk/vapigen/valavapigen.vala	Sun Jan  4 14:55:19 2009
@@ -1,6 +1,6 @@
 /* valavapigen.vala
  *
- * Copyright (C) 2006-2008  JÃrg Billeter
+ * Copyright (C) 2006-2009  JÃrg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -26,12 +26,15 @@
 	static string directory;
 	static bool version;
 	static bool quiet_mode;
-	[NoArrayLength ()]
+	[CCode (array_length = false)]
+	[NoArrayLength]
 	static string[] sources;
-	[NoArrayLength ()]
+	[CCode (array_length = false)]
+	[NoArrayLength]
 	static string[] vapi_directories;
 	static string library;
-	[NoArrayLength ()]
+	[CCode (array_length = false)]
+	[NoArrayLength]
 	static string[] packages;
 	static string metadata_filename;
 	CodeContext context;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]