[vala] codegen: Add return_default_value helper method



commit e6aafaa71533d38bf2d67b27b270159c670b1305
Author: Jürg Billeter <j bitron ch>
Date:   Mon Oct 18 16:30:33 2010 +0200

    codegen: Add return_default_value helper method

 codegen/valaccodebasemodule.vala   |    4 ++++
 codegen/valaccodemethodmodule.vala |    2 +-
 codegen/valagasyncmodule.vala      |    6 +-----
 codegen/valagdbusclientmodule.vala |   12 ++----------
 codegen/valagerrormodule.vala      |    8 ++------
 5 files changed, 10 insertions(+), 22 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index f5a55a1..c970eaf 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -5674,6 +5674,10 @@ public class Vala.CCodeBaseModule : CodeGenerator {
 		cfile.add_function (function);
 	}
 
+	public void return_default_value (DataType return_type) {
+		ccode.add_return (default_value_for_type (return_type, false));
+	}
+
 	public virtual string? get_custom_creturn_type (Method m) {
 		return null;
 	}
diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala
index a7e7fd7..a7022c2 100644
--- a/codegen/valaccodemethodmodule.vala
+++ b/codegen/valaccodemethodmodule.vala
@@ -651,7 +651,7 @@ public class Vala.CCodeMethodModule : CCodeStructModule {
 			ccode.add_expression (cerrorcall);
 
 			// add return statement
-			ccode.add_return (default_value_for_type (creturn_type, false));
+			return_default_value (creturn_type);
 
 			cfile.add_function (ccode);
 		}
diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala
index 703e86e..8147358 100644
--- a/codegen/valagasyncmodule.vala
+++ b/codegen/valagasyncmodule.vala
@@ -433,11 +433,7 @@ public class Vala.GAsyncModule : GSignalModule {
 			propagate_error.add_argument (new CCodeIdentifier ("error"));
 
 			ccode.open_if (propagate_error);
-			if (return_type is VoidType || return_type.is_real_non_null_struct_type ()) {
-				ccode.add_return ();
-			} else {
-				ccode.add_return (default_value_for_type (return_type, false));
-			}
+			return_default_value (return_type);
 			ccode.close ();
 		}
 
diff --git a/codegen/valagdbusclientmodule.vala b/codegen/valagdbusclientmodule.vala
index 223703a..7729d8a 100644
--- a/codegen/valagdbusclientmodule.vala
+++ b/codegen/valagdbusclientmodule.vala
@@ -479,11 +479,7 @@ public class Vala.GDBusClientModule : GDBusModule {
 		if (call_type == CallType.SYNC || call_type == CallType.FINISH) {
 			// return on error
 			ccode.open_if (new CCodeUnaryExpression (CCodeUnaryOperator.LOGICAL_NEGATION, new CCodeIdentifier ("_reply")));
-			if (m.return_type is VoidType || m.return_type.is_real_non_null_struct_type ()) {
-				ccode.add_return ();
-			} else {
-				ccode.add_return (default_value_for_type (m.return_type, false));
-			}
+			return_default_value (m.return_type);
 			ccode.close ();
 
 			ccode.add_declaration ("GVariantIter", new CCodeVariableDeclarator ("_reply_iter"));
@@ -708,11 +704,7 @@ public class Vala.GDBusClientModule : GDBusModule {
 
 		// return on error
 		ccode.open_if (new CCodeUnaryExpression (CCodeUnaryOperator.LOGICAL_NEGATION, new CCodeIdentifier ("_reply")));
-		if (prop.property_type.is_real_non_null_struct_type ()) {
-			ccode.add_return ();
-		} else {
-			ccode.add_return (default_value_for_type (prop.property_type, false));
-		}
+		return_default_value (prop.property_type);
 		ccode.close ();
 
 		ccode.add_declaration ("GVariantIter", new CCodeVariableDeclarator ("_reply_iter"));
diff --git a/codegen/valagerrormodule.vala b/codegen/valagerrormodule.vala
index 3a4f77c..a64b38a 100644
--- a/codegen/valagerrormodule.vala
+++ b/codegen/valagerrormodule.vala
@@ -109,10 +109,8 @@ public class Vala.GErrorModule : CCodeDelegateModule {
 			ccode.add_return (new CCodeConstant ("NULL"));
 		} else if (current_method != null && current_method.coroutine) {
 			ccode.add_return (new CCodeConstant ("FALSE"));
-		} else if (current_return_type is VoidType) {
-			ccode.add_return ();
 		} else {
-			ccode.add_return (default_value_for_type (current_return_type, false));
+			return_default_value (current_return_type);
 		}
 	}
 
@@ -141,10 +139,8 @@ public class Vala.GErrorModule : CCodeDelegateModule {
 			ccode.add_return (new CCodeConstant ("NULL"));
 		} else if (current_method != null && current_method.coroutine) {
 			ccode.add_return (new CCodeConstant ("FALSE"));
-		} else if (current_return_type is VoidType) {
-			ccode.add_return ();
 		} else if (current_return_type != null) {
-			ccode.add_return (default_value_for_type (current_return_type, false));
+			return_default_value (current_return_type);
 		}
 	}
 



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