Robert Shearman : widl: Don't treat FC_SMALL as FC_SHORT.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 12 06:44:54 CST 2005


Module: wine
Branch: refs/heads/master
Commit: f4356a64e3daefe125efe8714903ae84d68dfbfc
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=f4356a64e3daefe125efe8714903ae84d68dfbfc

Author: Robert Shearman <rob at codeweavers.com>
Date:   Mon Dec 12 12:11:11 2005 +0100

widl: Don't treat FC_SMALL as FC_SHORT.
FC_SMALL is its own type and is the same size as FC_CHAR, not
FC_SHORT.

---

 tools/widl/header.c  |    5 +++++
 tools/widl/parser.y  |    2 +-
 tools/widl/typegen.c |    7 +++++++
 3 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/tools/widl/header.c b/tools/widl/header.c
index be279ad..070657a 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -221,6 +221,11 @@ void write_type(FILE *h, type_t *t, var_
       case RPC_FC_WCHAR:
         fprintf(h, "WCHAR");
         break;
+      case RPC_FC_USMALL:
+      case RPC_FC_SMALL:
+        if (t->ref) fprintf(h, t->ref->name);
+        else fprintf(h, "small");
+        break;
       case RPC_FC_USHORT:
       case RPC_FC_SHORT:
         if (t->ref) fprintf(h, t->ref->name);
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index 86eac75..ef331a2 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -585,7 +585,7 @@ m_int:
 
 int_std:  tINT					{ $$ = make_type(RPC_FC_LONG, &std_int); } /* win32 only */
 	| tSHORT m_int				{ $$ = make_type(RPC_FC_SHORT, NULL); }
-	| tSMALL				{ $$ = make_type(RPC_FC_SHORT, NULL); }
+	| tSMALL				{ $$ = make_type(RPC_FC_SMALL, NULL); }
 	| tLONG m_int				{ $$ = make_type(RPC_FC_LONG, NULL); }
 	| tHYPER m_int				{ $$ = make_type(RPC_FC_HYPER, NULL); }
 	| tINT64				{ $$ = make_type(RPC_FC_HYPER, &std_int64); }
diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index 1ae84f1..14817da 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -71,6 +71,7 @@ static void write_procformatstring_var(F
     CASE_BASETYPE(FC_LONG);
     CASE_BASETYPE(FC_HYPER);
     CASE_BASETYPE(FC_IGNORE);
+    CASE_BASETYPE(FC_USMALL);
     CASE_BASETYPE(FC_SMALL);
     CASE_BASETYPE(FC_FLOAT);
     CASE_BASETYPE(FC_DOUBLE);
@@ -162,6 +163,8 @@ unsigned int get_required_buffer_size(ty
         case RPC_FC_WCHAR:
         case RPC_FC_USHORT:
         case RPC_FC_SHORT:
+        case RPC_FC_USMALL:
+        case RPC_FC_SMALL:
         case RPC_FC_ULONG:
         case RPC_FC_LONG:
         case RPC_FC_FLOAT:
@@ -198,6 +201,8 @@ void marshall_arguments(FILE *file, int 
         {
         case RPC_FC_BYTE:
         case RPC_FC_CHAR:
+        case RPC_FC_SMALL:
+        case RPC_FC_USMALL:
             size = 1;
             alignment = 0;
             break;
@@ -266,6 +271,8 @@ void unmarshall_arguments(FILE *file, in
         {
         case RPC_FC_BYTE:
         case RPC_FC_CHAR:
+        case RPC_FC_SMALL:
+        case RPC_FC_USMALL:
             size = 1;
             alignment = 0;
             break;




More information about the wine-cvs mailing list