[vala/staging: 3/3] codegen: Create only one vala-array helper function per array-type
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging: 3/3] codegen: Create only one vala-array helper function per array-type
- Date: Wed, 10 Feb 2016 10:37:15 +0000 (UTC)
commit 71fe7f9a632148971ec0266e82e8c608549d6bfe
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Thu Feb 4 23:38:48 2016 +0100
codegen: Create only one vala-array helper function per array-type
codegen/valaccodearraymodule.vala | 12 ++++++------
vala/valadatatype.vala | 20 ++++++++++++++++++++
2 files changed, 26 insertions(+), 6 deletions(-)
---
diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala
index 8922464..116383e 100644
--- a/codegen/valaccodearraymodule.vala
+++ b/codegen/valaccodearraymodule.vala
@@ -24,9 +24,6 @@
public class Vala.CCodeArrayModule : CCodeMethodCallModule {
- int next_array_dup_id = 0;
- int next_array_add_id = 0;
-
void append_initializer_list (CCodeExpression name_cnode, InitializerList initializer_list, int rank,
ref int i) {
foreach (Expression e in initializer_list.get_initializers ()) {
if (rank > 1) {
@@ -462,7 +459,8 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
}
string generate_array_dup_wrapper (ArrayType array_type) {
- string dup_func = "_vala_array_dup%d".printf (++next_array_dup_id);
+ string dup_func = "_vala_%s_%x_array_dup".printf (get_ccode_lower_case_name
(array_type.element_type),
+ array_type.element_type.get_type_flag ());
if (!add_wrapper (dup_func)) {
// wrapper already defined
@@ -535,7 +533,8 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
}
string generate_array_copy_wrapper (ArrayType array_type) {
- string dup_func = "_vala_array_copy%d".printf (++next_array_dup_id);
+ string dup_func = "_vala_%s_%x_array_copy".printf (get_ccode_lower_case_name
(array_type.element_type),
+ array_type.element_type.get_type_flag ());
if (!add_wrapper (dup_func)) {
// wrapper already defined
@@ -589,7 +588,8 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
}
string generate_array_add_wrapper (ArrayType array_type) {
- string add_func = "_vala_array_add%d".printf (++next_array_add_id);
+ string add_func = "_vala_%s_%x_array_add".printf (get_ccode_lower_case_name
(array_type.element_type),
+ array_type.element_type.get_type_flag ());
if (!add_wrapper (add_func)) {
// wrapper already defined
diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala
index 02b4cf1..0b0c67f 100644
--- a/vala/valadatatype.vala
+++ b/vala/valadatatype.vala
@@ -497,4 +497,24 @@ public abstract class Vala.DataType : CodeNode {
return true;
}
+
+ public uint get_type_flag () {
+ uint result = 0U;
+
+ if (value_owned)
+ result += 1 << 0;
+ if (nullable)
+ result += 1 << 1;
+ if (floating_reference)
+ result += 1 << 2;
+ if (is_dynamic)
+ result += 1 << 3;
+
+ if (is_real_struct_type ())
+ result += 1 << 10;
+ if (is_reference_type_or_type_parameter ())
+ result += 1 << 11;
+
+ return result;
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]