widl: Emit default argument values for cpp methods

Nikolay Sivov nsivov at codeweavers.com
Thu Jul 26 05:56:20 CDT 2012


Native midl does that as well.
-------------- next part --------------
>From f8091994005b9766618f033030a4c1355afdaf71 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu, 26 Jul 2012 14:54:34 +0400
Subject: [PATCH 4/4] Emit default argument values for cpp methods

---
 tools/widl/header.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/tools/widl/header.c b/tools/widl/header.c
index 0b2b9d5..036dda5 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -876,6 +876,21 @@ void write_args(FILE *h, const var_list_t *args, const char *name, int method, i
         else fprintf(h, ",");
     }
     write_type_decl(h, arg->type, arg->name);
+    if (method == 2) {
+        const attr_t *attr;
+
+        if (arg->attrs) LIST_FOR_EACH_ENTRY( attr, arg->attrs, const attr_t, entry ) {
+           if (attr->type == ATTR_DEFAULTVALUE) {
+               expr_t *expr = (expr_t *)attr->u.pval;
+               fprintf(h, " = ");
+               if (expr->type == EXPR_STRLIT || expr->type == EXPR_WSTRLIT)
+                  fprintf(h, "%s", expr->u.sval);
+               else
+                  fprintf(h, "%d", expr->cval);
+               break;
+           }
+        }
+    }
     count++;
   }
   if (do_indent) indentation--;
-- 
1.5.6.5



More information about the wine-patches mailing list