Switch to the new widl (Wine-20080118)

svn path=/trunk/; revision=31864
This commit is contained in:
Colin Finck 2008-01-18 12:41:15 +00:00
parent 4caea795dd
commit 5c06769534
8 changed files with 1237 additions and 1185 deletions

View file

@ -299,6 +299,7 @@ static const struct keyword attr_keywords[] =
{"single", tSINGLE}, {"single", tSINGLE},
{"size_is", tSIZEIS}, {"size_is", tSIZEIS},
{"source", tSOURCE}, {"source", tSOURCE},
{"strict_context_handle", tSTRICTCONTEXTHANDLE},
{"string", tSTRING}, {"string", tSTRING},
{"switch_is", tSWITCHIS}, {"switch_is", tSWITCHIS},
{"switch_type", tSWITCHTYPE}, {"switch_type", tSWITCHTYPE},

File diff suppressed because it is too large Load diff

View file

@ -140,28 +140,29 @@
tSMALL = 366, tSMALL = 366,
tSOURCE = 367, tSOURCE = 367,
tSTDCALL = 368, tSTDCALL = 368,
tSTRING = 369, tSTRICTCONTEXTHANDLE = 369,
tSTRUCT = 370, tSTRING = 370,
tSWITCH = 371, tSTRUCT = 371,
tSWITCHIS = 372, tSWITCH = 372,
tSWITCHTYPE = 373, tSWITCHIS = 373,
tTRANSMITAS = 374, tSWITCHTYPE = 374,
tTRUE = 375, tTRANSMITAS = 375,
tTYPEDEF = 376, tTRUE = 376,
tUNION = 377, tTYPEDEF = 377,
tUNIQUE = 378, tUNION = 378,
tUNSIGNED = 379, tUNIQUE = 379,
tUUID = 380, tUNSIGNED = 380,
tV1ENUM = 381, tUUID = 381,
tVARARG = 382, tV1ENUM = 382,
tVERSION = 383, tVARARG = 383,
tVOID = 384, tVERSION = 384,
tWCHAR = 385, tVOID = 385,
tWIREMARSHAL = 386, tWCHAR = 386,
CAST = 387, tWIREMARSHAL = 387,
PPTR = 388, CAST = 388,
NEG = 389, PPTR = 389,
ADDRESSOF = 390 NEG = 390,
ADDRESSOF = 391
}; };
#endif #endif
/* Tokens. */ /* Tokens. */
@ -276,28 +277,29 @@
#define tSMALL 366 #define tSMALL 366
#define tSOURCE 367 #define tSOURCE 367
#define tSTDCALL 368 #define tSTDCALL 368
#define tSTRING 369 #define tSTRICTCONTEXTHANDLE 369
#define tSTRUCT 370 #define tSTRING 370
#define tSWITCH 371 #define tSTRUCT 371
#define tSWITCHIS 372 #define tSWITCH 372
#define tSWITCHTYPE 373 #define tSWITCHIS 373
#define tTRANSMITAS 374 #define tSWITCHTYPE 374
#define tTRUE 375 #define tTRANSMITAS 375
#define tTYPEDEF 376 #define tTRUE 376
#define tUNION 377 #define tTYPEDEF 377
#define tUNIQUE 378 #define tUNION 378
#define tUNSIGNED 379 #define tUNIQUE 379
#define tUUID 380 #define tUNSIGNED 380
#define tV1ENUM 381 #define tUUID 381
#define tVARARG 382 #define tV1ENUM 382
#define tVERSION 383 #define tVARARG 383
#define tVOID 384 #define tVERSION 384
#define tWCHAR 385 #define tVOID 385
#define tWIREMARSHAL 386 #define tWCHAR 386
#define CAST 387 #define tWIREMARSHAL 387
#define PPTR 388 #define CAST 388
#define NEG 389 #define PPTR 389
#define ADDRESSOF 390 #define NEG 390
#define ADDRESSOF 391
@ -327,7 +329,7 @@ typedef union YYSTYPE {
interface_info_t ifinfo; interface_info_t ifinfo;
} YYSTYPE; } YYSTYPE;
/* Line 1447 of yacc.c. */ /* Line 1447 of yacc.c. */
#line 331 "parser.tab.h" #line 333 "parser.tab.h"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1

View file

@ -225,6 +225,7 @@ static void check_all_user_types(ifref_list_t *ifaces);
%token tSMALL %token tSMALL
%token tSOURCE %token tSOURCE
%token tSTDCALL %token tSTDCALL
%token tSTRICTCONTEXTHANDLE
%token tSTRING tSTRUCT %token tSTRING tSTRUCT
%token tSWITCH tSWITCHIS tSWITCHTYPE %token tSWITCH tSWITCHIS tSWITCHTYPE
%token tTRANSMITAS %token tTRANSMITAS
@ -497,6 +498,7 @@ attribute: { $$ = NULL; }
| tRETVAL { $$ = make_attr(ATTR_RETVAL); } | tRETVAL { $$ = make_attr(ATTR_RETVAL); }
| tSIZEIS '(' m_exprs ')' { $$ = make_attrp(ATTR_SIZEIS, $3); } | tSIZEIS '(' m_exprs ')' { $$ = make_attrp(ATTR_SIZEIS, $3); }
| tSOURCE { $$ = make_attr(ATTR_SOURCE); } | tSOURCE { $$ = make_attr(ATTR_SOURCE); }
| tSTRICTCONTEXTHANDLE { $$ = make_attr(ATTR_STRICTCONTEXTHANDLE); }
| tSTRING { $$ = make_attr(ATTR_STRING); } | tSTRING { $$ = make_attr(ATTR_STRING); }
| tSWITCHIS '(' expr ')' { $$ = make_attrp(ATTR_SWITCHIS, $3); } | tSWITCHIS '(' expr ')' { $$ = make_attrp(ATTR_SWITCHIS, $3); }
| tSWITCHTYPE '(' type ')' { $$ = make_attrp(ATTR_SWITCHTYPE, $3); } | tSWITCHTYPE '(' type ')' { $$ = make_attrp(ATTR_SWITCHTYPE, $3); }

View file

@ -16,10 +16,11 @@
#define yytext parser_text #define yytext parser_text
#define yywrap parser_wrap #define yywrap parser_wrap
#line 20 "parser.yy.c"
/* A lexical scanner generated by flex */ /* A lexical scanner generated by flex */
/* Scanner skeleton version: /* Scanner skeleton version:
* $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.85 95/04/24 10:48:47 vern Exp $ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
*/ */
#define FLEX_SCANNER #define FLEX_SCANNER
@ -144,6 +145,7 @@ extern FILE *yyin, *yyout;
{ \ { \
/* Undo effects of setting up yytext. */ \ /* Undo effects of setting up yytext. */ \
*yy_cp = yy_hold_char; \ *yy_cp = yy_hold_char; \
YY_RESTORE_YY_MORE_OFFSET \
yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
YY_DO_BEFORE_ACTION; /* set up yytext again */ \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \ } \
@ -253,7 +255,7 @@ void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str )); YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
static void *yy_flex_alloc YY_PROTO(( yy_size_t )); static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
@ -480,6 +482,7 @@ static char *yy_last_accepting_cpos;
#define REJECT reject_used_but_not_detected #define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected #define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0 #define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext; char *yytext;
#line 1 "parser.l" #line 1 "parser.l"
#define INITIAL 0 #define INITIAL 0
@ -580,7 +583,7 @@ UUID *parse_uuid(const char *u)
* The flexer starts here * The flexer starts here
************************************************************************** **************************************************************************
*/ */
#line 584 "lex.parser_.c" #line 587 "parser.yy.c"
/* Macros after this point can all be overridden by user definitions in /* Macros after this point can all be overridden by user definitions in
* section 1. * section 1.
@ -602,6 +605,10 @@ static void yyunput YY_PROTO(( int c, char *buf_ptr ));
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif #endif
#ifdef YY_NEED_STRLEN
static int yy_flex_strlen YY_PROTO(( yyconst char * ));
#endif
#ifndef YY_NO_INPUT #ifndef YY_NO_INPUT
#ifdef __cplusplus #ifdef __cplusplus
static int yyinput YY_PROTO(( void )); static int yyinput YY_PROTO(( void ));
@ -732,7 +739,7 @@ YY_DECL
#line 108 "parser.l" #line 108 "parser.l"
#line 736 "lex.parser_.c" #line 743 "parser.yy.c"
if ( yy_init ) if ( yy_init )
{ {
@ -978,7 +985,7 @@ YY_RULE_SETUP
#line 172 "parser.l" #line 172 "parser.l"
ECHO; ECHO;
YY_BREAK YY_BREAK
#line 982 "lex.parser_.c" #line 989 "parser.yy.c"
case YY_END_OF_BUFFER: case YY_END_OF_BUFFER:
{ {
@ -987,6 +994,7 @@ ECHO;
/* Undo the effects of YY_DO_BEFORE_ACTION. */ /* Undo the effects of YY_DO_BEFORE_ACTION. */
*yy_cp = yy_hold_char; *yy_cp = yy_hold_char;
YY_RESTORE_YY_MORE_OFFSET
if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
{ {
@ -1132,7 +1140,7 @@ static int yy_get_next_buffer()
{ /* Don't try to fill the buffer, so this is an EOF. */ { /* Don't try to fill the buffer, so this is an EOF. */
if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
{ {
/* We matched a singled characater, the EOB, so /* We matched a single character, the EOB, so
* treat this as a final EOF. * treat this as a final EOF.
*/ */
return EOB_ACT_END_OF_FILE; return EOB_ACT_END_OF_FILE;
@ -1159,7 +1167,7 @@ static int yy_get_next_buffer()
/* don't do the read, it's not guaranteed to return an EOF, /* don't do the read, it's not guaranteed to return an EOF,
* just force an EOF * just force an EOF
*/ */
yy_n_chars = 0; yy_current_buffer->yy_n_chars = yy_n_chars = 0;
else else
{ {
@ -1214,6 +1222,8 @@ static int yy_get_next_buffer()
/* Read in more data. */ /* Read in more data. */
YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
yy_n_chars, num_to_read ); yy_n_chars, num_to_read );
yy_current_buffer->yy_n_chars = yy_n_chars;
} }
if ( yy_n_chars == 0 ) if ( yy_n_chars == 0 )
@ -1339,6 +1349,7 @@ register char *yy_bp;
yy_cp += (int) (dest - source); yy_cp += (int) (dest - source);
yy_bp += (int) (dest - source); yy_bp += (int) (dest - source);
yy_current_buffer->yy_n_chars =
yy_n_chars = yy_current_buffer->yy_buf_size; yy_n_chars = yy_current_buffer->yy_buf_size;
if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
@ -1377,19 +1388,31 @@ static int input()
else else
{ /* need more input */ { /* need more input */
yytext_ptr = yy_c_buf_p; int offset = yy_c_buf_p - yytext_ptr;
++yy_c_buf_p; ++yy_c_buf_p;
switch ( yy_get_next_buffer() ) switch ( yy_get_next_buffer() )
{ {
case EOB_ACT_LAST_MATCH:
/* This happens because yy_g_n_b()
* sees that we've accumulated a
* token and flags that we need to
* try matching the token before
* proceeding. But for input(),
* there's no matching to consider.
* So convert the EOB_ACT_LAST_MATCH
* to EOB_ACT_END_OF_FILE.
*/
/* Reset buffer status. */
yyrestart( yyin );
/* fall through */
case EOB_ACT_END_OF_FILE: case EOB_ACT_END_OF_FILE:
{ {
if ( yywrap() ) if ( yywrap() )
{
yy_c_buf_p =
yytext_ptr + YY_MORE_ADJ;
return EOF; return EOF;
}
if ( ! yy_did_buffer_switch_on_eof ) if ( ! yy_did_buffer_switch_on_eof )
YY_NEW_FILE; YY_NEW_FILE;
@ -1401,17 +1424,8 @@ static int input()
} }
case EOB_ACT_CONTINUE_SCAN: case EOB_ACT_CONTINUE_SCAN:
yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; yy_c_buf_p = yytext_ptr + offset;
break; break;
case EOB_ACT_LAST_MATCH:
#ifdef __cplusplus
YY_FATAL_ERROR(
"unexpected last match in yyinput()" );
#else
YY_FATAL_ERROR(
"unexpected last match in input()" );
#endif
} }
} }
} }
@ -1576,6 +1590,9 @@ YY_BUFFER_STATE b;
#endif #endif
{ {
if ( ! b )
return;
b->yy_n_chars = 0; b->yy_n_chars = 0;
/* We always need two end-of-buffer characters. The first causes /* We always need two end-of-buffer characters. The first causes
@ -1635,17 +1652,17 @@ yy_size_t size;
#ifndef YY_NO_SCAN_STRING #ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS #ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *str ) YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
#else #else
YY_BUFFER_STATE yy_scan_string( str ) YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *str; yyconst char *yy_str;
#endif #endif
{ {
int len; int len;
for ( len = 0; str[len]; ++len ) for ( len = 0; yy_str[len]; ++len )
; ;
return yy_scan_bytes( str, len ); return yy_scan_bytes( yy_str, len );
} }
#endif #endif
@ -1766,7 +1783,7 @@ char msg[];
{ \ { \
/* Undo effects of setting up yytext. */ \ /* Undo effects of setting up yytext. */ \
yytext[yyleng] = yy_hold_char; \ yytext[yyleng] = yy_hold_char; \
yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ yy_c_buf_p = yytext + n; \
yy_hold_char = *yy_c_buf_p; \ yy_hold_char = *yy_c_buf_p; \
*yy_c_buf_p = '\0'; \ *yy_c_buf_p = '\0'; \
yyleng = n; \ yyleng = n; \
@ -1792,6 +1809,22 @@ int n;
} }
#endif #endif
#ifdef YY_NEED_STRLEN
#ifdef YY_USE_PROTOS
static int yy_flex_strlen( yyconst char *s )
#else
static int yy_flex_strlen( s )
yyconst char *s;
#endif
{
register int n;
for ( n = 0; s[n]; ++n )
;
return n;
}
#endif
#ifdef YY_USE_PROTOS #ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size ) static void *yy_flex_alloc( yy_size_t size )
@ -1969,6 +2002,7 @@ static const struct keyword attr_keywords[] =
{"single", tSINGLE}, {"single", tSINGLE},
{"size_is", tSIZEIS}, {"size_is", tSIZEIS},
{"source", tSOURCE}, {"source", tSOURCE},
{"strict_context_handle", tSTRICTCONTEXTHANDLE},
{"string", tSTRING}, {"string", tSTRING},
{"switch_is", tSWITCHIS}, {"switch_is", tSWITCHIS},
{"switch_type", tSWITCHTYPE}, {"switch_type", tSWITCHTYPE},

View file

@ -43,6 +43,7 @@
static const func_t *current_func; static const func_t *current_func;
static const type_t *current_structure; static const type_t *current_structure;
static const ifref_t *current_iface;
static struct list expr_eval_routines = LIST_INIT(expr_eval_routines); static struct list expr_eval_routines = LIST_INIT(expr_eval_routines);
struct expr_eval_routine struct expr_eval_routine
@ -1472,11 +1473,9 @@ static size_t write_string_tfs(FILE *file, const attr_list_t *attrs,
const char *name, unsigned int *typestring_offset, const char *name, unsigned int *typestring_offset,
int toplevel) int toplevel)
{ {
size_t start_offset = *typestring_offset; size_t start_offset;
unsigned char rtype; unsigned char rtype;
update_tfsoff(type, start_offset, file);
if (toplevel && is_declptr(type)) if (toplevel && is_declptr(type))
{ {
unsigned char flag = is_conformant_array(type) ? 0 : RPC_FC_P_SIMPLEPOINTER; unsigned char flag = is_conformant_array(type) ? 0 : RPC_FC_P_SIMPLEPOINTER;
@ -1494,6 +1493,9 @@ static size_t write_string_tfs(FILE *file, const attr_list_t *attrs,
} }
} }
start_offset = *typestring_offset;
update_tfsoff(type, start_offset, file);
rtype = type->ref->type; rtype = type->ref->type;
if ((rtype != RPC_FC_BYTE) && (rtype != RPC_FC_CHAR) && (rtype != RPC_FC_WCHAR)) if ((rtype != RPC_FC_BYTE) && (rtype != RPC_FC_CHAR) && (rtype != RPC_FC_WCHAR))
@ -2056,7 +2058,10 @@ static size_t write_contexthandle_tfs(FILE *file, const type_t *type,
unsigned int *typeformat_offset) unsigned int *typeformat_offset)
{ {
size_t start_offset = *typeformat_offset; size_t start_offset = *typeformat_offset;
unsigned char flags = 0x08 /* strict */; unsigned char flags = 0;
if (is_attr(current_iface->attrs, ATTR_STRICTCONTEXTHANDLE))
flags |= NDR_STRICT_CONTEXT_HANDLE;
if (is_ptr(type)) if (is_ptr(type))
flags |= 0x80; flags |= 0x80;
@ -2064,20 +2069,21 @@ static size_t write_contexthandle_tfs(FILE *file, const type_t *type,
{ {
flags |= 0x40; flags |= 0x40;
if (!is_attr(var->attrs, ATTR_OUT)) if (!is_attr(var->attrs, ATTR_OUT))
flags |= 0x01; flags |= NDR_CONTEXT_HANDLE_CANNOT_BE_NULL;
} }
if (is_attr(var->attrs, ATTR_OUT)) if (is_attr(var->attrs, ATTR_OUT))
flags |= 0x20; flags |= 0x20;
WRITE_FCTYPE(file, FC_BIND_CONTEXT, *typeformat_offset); WRITE_FCTYPE(file, FC_BIND_CONTEXT, *typeformat_offset);
print_file(file, 2, "0x%x,\t/* Context flags: ", flags); print_file(file, 2, "0x%x,\t/* Context flags: ", flags);
if (((flags & 0x21) != 0x21) && (flags & 0x01)) /* return and can't be null values overlap */
if (((flags & 0x21) != 0x21) && (flags & NDR_CONTEXT_HANDLE_CANNOT_BE_NULL))
print_file(file, 0, "can't be null, "); print_file(file, 0, "can't be null, ");
if (flags & 0x02) if (flags & NDR_CONTEXT_HANDLE_SERIALIZE)
print_file(file, 0, "serialize, "); print_file(file, 0, "serialize, ");
if (flags & 0x04) if (flags & NDR_CONTEXT_HANDLE_NO_SERIALIZE)
print_file(file, 0, "no serialize, "); print_file(file, 0, "no serialize, ");
if (flags & 0x08) if (flags & NDR_STRICT_CONTEXT_HANDLE)
print_file(file, 0, "strict, "); print_file(file, 0, "strict, ");
if ((flags & 0x21) == 0x20) if ((flags & 0x21) == 0x20)
print_file(file, 0, "out, "); print_file(file, 0, "out, ");
@ -2279,6 +2285,7 @@ static size_t process_tfs(FILE *file, const ifref_list_t *ifaces, type_pred_t pr
if (iface->iface->funcs) if (iface->iface->funcs)
{ {
const func_t *func; const func_t *func;
current_iface = iface;
LIST_FOR_EACH_ENTRY( func, iface->iface->funcs, const func_t, entry ) LIST_FOR_EACH_ENTRY( func, iface->iface->funcs, const func_t, entry )
{ {
if (is_local(func->def->attrs)) continue; if (is_local(func->def->attrs)) continue;
@ -2706,10 +2713,11 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func,
} }
else else
{ {
print_file(file, indent, "NdrServerContextMarshall(\n"); print_file(file, indent, "NdrServerContextNewMarshall(\n");
print_file(file, indent + 1, "&_StubMsg,\n"); print_file(file, indent + 1, "&_StubMsg,\n");
print_file(file, indent + 1, "(NDR_SCONTEXT)%s,\n", var->name); print_file(file, indent + 1, "(NDR_SCONTEXT)%s,\n", var->name);
print_file(file, indent + 1, "(NDR_RUNDOWN)%s_rundown);\n", get_context_handle_type_name(var->type)); print_file(file, indent + 1, "(NDR_RUNDOWN)%s_rundown,\n", get_context_handle_type_name(var->type));
print_file(file, indent + 1, "(PFORMAT_STRING)&__MIDL_TypeFormatString.Format[%d]);\n", start_offset);
} }
} }
else if (phase == PHASE_UNMARSHAL) else if (phase == PHASE_UNMARSHAL)
@ -2722,7 +2730,11 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func,
print_file(file, indent + 1, "_Handle);\n"); print_file(file, indent + 1, "_Handle);\n");
} }
else else
print_file(file, indent, "%s = NdrServerContextUnmarshall(&_StubMsg);\n", var->name); {
print_file(file, indent, "%s = NdrServerContextNewUnmarshall(\n", var->name);
print_file(file, indent + 1, "&_StubMsg,\n");
print_file(file, indent + 1, "(PFORMAT_STRING)&__MIDL_TypeFormatString.Format[%d]);\n", start_offset);
}
} }
} }
else if (is_user_type(var->type)) else if (is_user_type(var->type))
@ -2743,10 +2755,11 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func,
} }
if ((phase == PHASE_FREE) || (pointer_type == RPC_FC_UP)) if ((phase == PHASE_FREE) || (pointer_type == RPC_FC_UP))
print_phase_function(file, indent, "Pointer", phase, var, start_offset); print_phase_function(file, indent, "Pointer", phase, var,
start_offset - (type->size_is ? 4 : 2));
else else
print_phase_function(file, indent, "ConformantString", phase, var, print_phase_function(file, indent, "ConformantString", phase, var,
start_offset + (type->size_is ? 4 : 2)); start_offset);
} }
} }
else if (is_array(type)) else if (is_array(type))
@ -2813,7 +2826,8 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func,
if (type->type == RPC_FC_BOGUS_ARRAY || if (type->type == RPC_FC_BOGUS_ARRAY ||
type->type == RPC_FC_CVARRAY || type->type == RPC_FC_CVARRAY ||
((type->type == RPC_FC_SMVARRAY || type->type == RPC_FC_LGVARRAY) && in_attr) || ((type->type == RPC_FC_SMVARRAY || type->type == RPC_FC_LGVARRAY) && in_attr) ||
(type->type == RPC_FC_CARRAY && !in_attr)) { (type->type == RPC_FC_CARRAY && !in_attr))
{
print_file(file, indent, "if (%s)\n", var->name); print_file(file, indent, "if (%s)\n", var->name);
indent++; indent++;
print_file(file, indent, "_StubMsg.pfnFree(%s);\n", var->name); print_file(file, indent, "_StubMsg.pfnFree(%s);\n", var->name);

View file

@ -1,6 +1,6 @@
Index: hash.c Index: hash.c
=================================================================== ===================================================================
--- hash.c (revision 31815) --- hash.c (revision 31863)
+++ hash.c (working copy) +++ hash.c (working copy)
@@ -21,9 +21,7 @@ @@ -21,9 +21,7 @@
#include <stdio.h> #include <stdio.h>
@ -36,7 +36,7 @@ Index: hash.c
break; break;
Index: server.c Index: server.c
=================================================================== ===================================================================
--- server.c (revision 31815) --- server.c (revision 31863)
+++ server.c (working copy) +++ server.c (working copy)
@@ -390,6 +390,7 @@ @@ -390,6 +390,7 @@
print_server("/*** Autogenerated by WIDL %s from %s - Do not edit ***/\n", PACKAGE_VERSION, input_name); print_server("/*** Autogenerated by WIDL %s from %s - Do not edit ***/\n", PACKAGE_VERSION, input_name);
@ -48,7 +48,7 @@ Index: server.c
} }
Index: typelib.c Index: typelib.c
=================================================================== ===================================================================
--- typelib.c (revision 31815) --- typelib.c (revision 31863)
+++ typelib.c (working copy) +++ typelib.c (working copy)
@@ -35,8 +35,7 @@ @@ -35,8 +35,7 @@
#define NONAMELESSUNION #define NONAMELESSUNION
@ -62,7 +62,7 @@ Index: typelib.c
#include "utils.h" #include "utils.h"
Index: utils.c Index: utils.c
=================================================================== ===================================================================
--- utils.c (revision 31815) --- utils.c (revision 31863)
+++ utils.c (working copy) +++ utils.c (working copy)
@@ -136,6 +136,9 @@ @@ -136,6 +136,9 @@
name = "widl.tab"; name = "widl.tab";
@ -76,7 +76,7 @@ Index: utils.c
Index: widl.c Index: widl.c
=================================================================== ===================================================================
--- widl.c (revision 31815) --- widl.c (revision 31863)
+++ widl.c (working copy) +++ widl.c (working copy)
@@ -166,6 +166,9 @@ @@ -166,6 +166,9 @@
int i; int i;
@ -90,7 +90,7 @@ Index: widl.c
token = xstrdup(name); token = xstrdup(name);
Index: widltypes.h Index: widltypes.h
=================================================================== ===================================================================
--- widltypes.h (revision 31815) --- widltypes.h (revision 31863)
+++ widltypes.h (working copy) +++ widltypes.h (working copy)
@@ -21,6 +21,13 @@ @@ -21,6 +21,13 @@
#ifndef __WIDL_WIDLTYPES_H #ifndef __WIDL_WIDLTYPES_H
@ -108,7 +108,7 @@ Index: widltypes.h
#include "wine/rpcfc.h" #include "wine/rpcfc.h"
Index: write_msft.c Index: write_msft.c
=================================================================== ===================================================================
--- write_msft.c (revision 31815) --- write_msft.c (revision 31863)
+++ write_msft.c (working copy) +++ write_msft.c (working copy)
@@ -40,10 +40,8 @@ @@ -40,10 +40,8 @@
#define NONAMELESSUNION #define NONAMELESSUNION

View file

@ -128,6 +128,7 @@ enum attr_type
ATTR_RETVAL, ATTR_RETVAL,
ATTR_SIZEIS, ATTR_SIZEIS,
ATTR_SOURCE, ATTR_SOURCE,
ATTR_STRICTCONTEXTHANDLE,
ATTR_STRING, ATTR_STRING,
ATTR_SWITCHIS, ATTR_SWITCHIS,
ATTR_SWITCHTYPE, ATTR_SWITCHTYPE,