Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
7afd550f
Commit
7afd550f
authored
Nov 17, 2020
by
Kevin Puetz
Committed by
Alexandre Julliard
Nov 18, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
widl: Parse attribute custom(guid,expr).
Signed-off-by:
Kevin Puetz
<
PuetzKevinA@JohnDeere.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
216b9cb0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
1 deletion
+23
-1
parser.l
tools/widl/parser.l
+1
-1
parser.y
tools/widl/parser.y
+15
-0
widltypes.h
tools/widl/widltypes.h
+7
-0
No files found.
tools/widl/parser.l
View file @
7afd550f
...
...
@@ -339,6 +339,7 @@ static const struct keyword attr_keywords[] =
{"context_handle_noserialize", tCONTEXTHANDLENOSERIALIZE, 0},
{"context_handle_serialize", tCONTEXTHANDLENOSERIALIZE, 0},
{"control", tCONTROL, 0},
{"custom", tCUSTOM, 0},
{"decode", tDECODE, 0},
{"defaultbind", tDEFAULTBIND, 0},
{"defaultcollelem", tDEFAULTCOLLELEM, 0},
...
...
@@ -431,7 +432,6 @@ static const struct keyword attr_keywords[] =
};
/* attributes TODO:
custom
first_is
last_is
max_is
...
...
tools/widl/parser.y
View file @
7afd550f
...
...
@@ -58,6 +58,7 @@ static decl_spec_t *make_decl_spec(type_t *type, decl_spec_t *left, decl_spec_t
static attr_t *make_attr(enum attr_type type);
static attr_t *make_attrv(enum attr_type type, unsigned int val);
static attr_t *make_attrp(enum attr_type type, void *val);
static attr_t *make_custom_attr(UUID *id, expr_t *pval);
static expr_list_t *append_expr(expr_list_t *list, expr_t *expr);
static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, declarator_t *decl, int top);
static var_list_t *set_var_types(attr_list_t *attrs, decl_spec_t *decl_spec, declarator_list_t *decls);
...
...
@@ -177,6 +178,7 @@ static typelib_t *current_typelib;
%token tCALLAS tCALLBACK tCASE tCDECL tCHAR tCOCLASS tCODE tCOMMSTATUS
%token tCONST tCONTEXTHANDLE tCONTEXTHANDLENOSERIALIZE
%token tCONTEXTHANDLESERIALIZE tCONTROL tCPPQUOTE
%token tCUSTOM
%token tDECODE tDEFAULT tDEFAULTBIND
%token tDEFAULTCOLLELEM
%token tDEFAULTVALUE
...
...
@@ -506,6 +508,7 @@ attribute: { $$ = NULL; }
| tCONTEXTHANDLENOSERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
| tCONTEXTHANDLESERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
| tCONTROL { $$ = make_attr(ATTR_CONTROL); }
| tCUSTOM '(' uuid_string ',' expr_const ')' { $$ = make_custom_attr($3, $5); }
| tDECODE { $$ = make_attr(ATTR_DECODE); }
| tDEFAULT { $$ = make_attr(ATTR_DEFAULT); }
| tDEFAULTBIND { $$ = make_attr(ATTR_DEFAULTBIND); }
...
...
@@ -1366,6 +1369,17 @@ static attr_t *make_attrp(enum attr_type type, void *val)
return a;
}
static attr_t *make_custom_attr(UUID *id, expr_t *pval)
{
attr_t *a = xmalloc(sizeof(attr_t));
attr_custdata_t *cstdata = xmalloc(sizeof(attr_custdata_t));
a->type = ATTR_CUSTOM;
cstdata->id = *id;
cstdata->pval = pval;
a->u.pval = cstdata;
return a;
}
static expr_list_t *append_expr(expr_list_t *list, expr_t *expr)
{
if (!expr) return list;
...
...
@@ -2142,6 +2156,7 @@ struct allowed_attr allowed_attr[] =
/* ATTR_COMMSTATUS */ { 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "comm_status" },
/* ATTR_CONTEXTHANDLE */ { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "context_handle" },
/* ATTR_CONTROL */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, "control" },
/* ATTR_CUSTOM */ { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, "custom" },
/* ATTR_DECODE */ { 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "decode" },
/* ATTR_DEFAULT */ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, "default" },
/* ATTR_DEFAULTBIND */ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "defaultbind" },
...
...
tools/widl/widltypes.h
View file @
7afd550f
...
...
@@ -37,6 +37,7 @@ typedef GUID UUID;
typedef
struct
_loc_info_t
loc_info_t
;
typedef
struct
_attr_t
attr_t
;
typedef
struct
_attr_custdata_t
attr_custdata_t
;
typedef
struct
_expr_t
expr_t
;
typedef
struct
_type_t
type_t
;
typedef
struct
_var_t
var_t
;
...
...
@@ -84,6 +85,7 @@ enum attr_type
ATTR_COMMSTATUS
,
ATTR_CONTEXTHANDLE
,
ATTR_CONTROL
,
ATTR_CUSTOM
,
ATTR_DECODE
,
ATTR_DEFAULT
,
ATTR_DEFAULTBIND
,
...
...
@@ -338,6 +340,11 @@ struct _expr_t {
struct
list
entry
;
};
struct
_attr_custdata_t
{
GUID
id
;
expr_t
*
pval
;
};
struct
struct_details
{
var_list_t
*
fields
;
...
...
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