Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
646dfe74
Commit
646dfe74
authored
Mar 29, 2016
by
Sergei Bolotov
Committed by
Alexandre Julliard
Apr 12, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
widl: Handle "midl_pragma warning" statement in parser.
Signed-off-by:
Sergei Bolotov
<
bolotov.s.s@yandex.ru
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
044baef5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
1 deletion
+38
-1
parser.l
tools/widl/parser.l
+1
-0
parser.y
tools/widl/parser.y
+30
-1
widltypes.h
tools/widl/widltypes.h
+7
-0
No files found.
tools/widl/parser.l
View file @
646dfe74
...
...
@@ -164,6 +164,7 @@ UUID *parse_uuid(const char *u)
yy_pop_state();
}
<PP_PRAGMA>[^\n]* parser_lval.str = xstrdup(yytext); yy_pop_state(); return aPRAGMA;
<INITIAL>^{ws}*midl_pragma{ws}+warning return tPRAGMA_WARNING;
<INITIAL,ATTR>\" yy_push_state(QUOTE); cbufidx = 0;
<QUOTE>\" {
yy_pop_state();
...
...
tools/widl/parser.y
View file @
646dfe74
...
...
@@ -83,6 +83,7 @@ static declarator_t *make_declarator(var_t *var);
static type_t *make_safearray(type_t *type);
static typelib_t *make_library(const char *name, const attr_list_t *attrs);
static type_t *append_ptrchain_type(type_t *ptrchain, type_t *type);
static warning_list_t *append_warning(warning_list_t *, int);
static type_t *reg_typedefs(decl_spec_t *decl_spec, var_list_t *names, attr_list_t *attrs);
static type_t *find_type_or_error(const char *name, int t);
...
...
@@ -148,6 +149,8 @@ static struct namespace *current_namespace = &global_namespace;
declarator_list_t *declarator_list;
statement_t *statement;
statement_list_t *stmt_list;
warning_t *warning;
warning_list_t *warning_list;
ifref_t *ifref;
ifref_list_t *ifref_list;
char *str;
...
...
@@ -224,6 +227,7 @@ static struct namespace *current_namespace = &global_namespace;
%token tOUT
%token tPARTIALIGNORE tPASCAL
%token tPOINTERDEFAULT
%token tPRAGMA_WARNING
%token tPROGID tPROPERTIES
%token tPROPGET tPROPPUT tPROPPUTREF
%token tPROXY tPTR
...
...
@@ -291,8 +295,9 @@ static struct namespace *current_namespace = &global_namespace;
%type <uuid> uuid_string
%type <import> import_start
%type <typelib> library_start librarydef
%type <statement> statement typedef
%type <statement> statement typedef
pragma_warning
%type <stmt_list> gbl_statements imp_statements int_statements
%type <warning_list> warnings
%left ','
%right '?' ':'
...
...
@@ -373,6 +378,15 @@ statement:
| import { $$ = make_statement_import($1); }
| typedef ';' { $$ = $1; }
| aPRAGMA { $$ = make_statement_pragma($1); }
| pragma_warning { $$ = NULL; }
;
pragma_warning: tPRAGMA_WARNING '(' aIDENTIFIER ':' warnings ')' { $$ = NULL; }
;
warnings:
aNUM { $$ = append_warning(NULL, $1); }
| warnings aNUM { $$ = append_warning($1, $2); }
;
typedecl:
...
...
@@ -1413,6 +1427,21 @@ static type_t *append_ptrchain_type(type_t *ptrchain, type_t *type)
return ptrchain;
}
static warning_list_t *append_warning(warning_list_t *list, int num)
{
warning_t *entry;
if(!list)
{
list = xmalloc( sizeof(*list) );
list_init( list );
}
entry = xmalloc( sizeof(*entry) );
entry->num = num;
list_add_tail( list, &entry->entry );
return list;
}
static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const declarator_t *decl,
int top)
{
...
...
tools/widl/widltypes.h
View file @
646dfe74
...
...
@@ -51,6 +51,7 @@ typedef struct _user_type_t context_handle_t;
typedef
struct
_user_type_t
generic_handle_t
;
typedef
struct
_type_list_t
type_list_t
;
typedef
struct
_statement_t
statement_t
;
typedef
struct
_warning_t
warning_t
;
typedef
struct
list
attr_list_t
;
typedef
struct
list
str_list_t
;
...
...
@@ -63,6 +64,7 @@ typedef struct list user_type_list_t;
typedef
struct
list
context_handle_list_t
;
typedef
struct
list
generic_handle_list_t
;
typedef
struct
list
statement_list_t
;
typedef
struct
list
warning_list_t
;
enum
attr_type
{
...
...
@@ -538,6 +540,11 @@ struct _statement_t {
}
u
;
};
struct
_warning_t
{
int
num
;
struct
list
entry
;
};
typedef
enum
{
SYS_WIN16
,
SYS_WIN32
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment