[vala/wip/attributes: 33/100] codegen: Add get_ccode_type
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/attributes: 33/100] codegen: Add get_ccode_type
- Date: Sat, 2 Jul 2011 12:28:04 +0000 (UTC)
commit e65be19b4d9a02c6e5e5d31f32b417b0c8efd8b5
Author: Luca Bruno <lucabru src gnome org>
Date: Tue Jun 28 19:36:50 2011 +0200
codegen: Add get_ccode_type
codegen/valaccodebasemodule.vala | 20 ++++++++++++--------
codegen/valaccodememberaccessmodule.vala | 4 ++--
codegen/valaccodemethodcallmodule.vala | 6 +++---
codegen/valaccodemethodmodule.vala | 10 +++-------
4 files changed, 20 insertions(+), 20 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 7726c30..8f2e1ce 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -2130,7 +2130,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
var cexpr = get_cvalue (expr);
- string ctype = field.get_ctype ();
+ string ctype = get_ccode_type (field);
if (ctype != null) {
cexpr = new CCodeCastExpression (cexpr, ctype);
}
@@ -4170,8 +4170,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
cexpr = handle_struct_argument (param, arg, cexpr);
- if (param.ctype != null) {
- cexpr = new CCodeCastExpression (cexpr, param.ctype);
+ if (get_ccode_type (param) != null) {
+ cexpr = new CCodeCastExpression (cexpr, get_ccode_type (param));
}
} else {
cexpr = handle_struct_argument (null, arg, cexpr);
@@ -4250,7 +4250,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
// cast the return value of the creation method back to the intended type if
// it requested a special C return type
- if (get_custom_creturn_type (m) != null) {
+ if (get_ccode_type (m) != null) {
creation_expr = new CCodeCastExpression (creation_expr, get_ccode_name (expr.type_reference));
}
} else if (expr.symbol_reference is ErrorCode) {
@@ -5755,6 +5755,14 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
return get_ccode_attribute(param).pos;
}
+ public static string? get_ccode_type (CodeNode node) {
+ var a = node.get_attribute ("CCode");
+ if (a != null) {
+ return a.get_string ("type");
+ }
+ return null;
+ }
+
public override void visit_class (Class cl) {
}
@@ -5856,10 +5864,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
ccode.add_return (default_value_for_type (return_type, false));
}
- public virtual string? get_custom_creturn_type (Method m) {
- return null;
- }
-
public virtual void generate_dynamic_method_wrapper (DynamicMethod method) {
}
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 6df007e..92f91d2 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -402,7 +402,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
if (param.has_array_length_cexpr) {
result.array_length_cexpr = new CCodeConstant (param.get_array_length_cexpr ());
}
- result.ctype = param.ctype;
+ result.ctype = get_ccode_type (param);
var array_type = result.value_type as ArrayType;
var delegate_type = result.value_type as DelegateType;
@@ -522,7 +522,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
if (field.has_array_length_cexpr) {
result.array_length_cexpr = new CCodeConstant (field.get_array_length_cexpr ());
}
- result.ctype = field.get_ctype ();
+ result.ctype = get_ccode_type (field);
var array_type = result.value_type as ArrayType;
var delegate_type = result.value_type as DelegateType;
diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala
index 9cc3573..6095862 100644
--- a/codegen/valaccodemethodcallmodule.vala
+++ b/codegen/valaccodemethodcallmodule.vala
@@ -351,7 +351,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
CCodeExpression delegate_target_destroy_notify;
var delegate_target = get_delegate_target_cexpression (arg, out delegate_target_destroy_notify);
assert (delegate_target != null);
- if (param.ctype == "GClosure*") {
+ if (get_ccode_type (param) == "GClosure*") {
// one single GClosure parameter
var closure_new = new CCodeFunctionCall (new CCodeIdentifier ("g_cclosure_new"));
closure_new.add_argument (new CCodeCastExpression (cexpr, "GCallback"));
@@ -426,8 +426,8 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
}
}
- if (param.ctype != null) {
- cexpr = new CCodeCastExpression (cexpr, param.ctype);
+ if (get_ccode_type (param) != null) {
+ cexpr = new CCodeCastExpression (cexpr, get_ccode_type (param));
}
} else {
cexpr = handle_struct_argument (null, arg, cexpr);
diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala
index c24418d..24bfe5d 100644
--- a/codegen/valaccodemethodmodule.vala
+++ b/codegen/valaccodemethodmodule.vala
@@ -31,12 +31,8 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
return (method.get_attribute ("NoWrapper") == null);
}
- public override string? get_custom_creturn_type (Method m) {
- return m.custom_return_type_cname;
- }
-
string get_creturn_type (Method m, string default_value) {
- string type = get_custom_creturn_type (m);
+ string type = get_ccode_type (m);
if (type == null) {
return default_value;
}
@@ -620,8 +616,8 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
if (current_type_symbol is Class) {
CCodeExpression cresult = new CCodeIdentifier ("self");
- if (get_custom_creturn_type (m) != null) {
- cresult = new CCodeCastExpression (cresult, get_custom_creturn_type (m));
+ if (get_ccode_type (m) != null) {
+ cresult = new CCodeCastExpression (cresult, get_ccode_type (m));
}
ccode.add_return (cresult);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]