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
d458a599
Commit
d458a599
authored
Dec 10, 2007
by
Rob Shearman
Committed by
Alexandre Julliard
Dec 11, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
widl: Add support for non-basetype return types.
parent
a95420a0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
43 additions
and
3 deletions
+43
-3
server.c
dlls/rpcrt4/tests/server.c
+10
-0
server.idl
dlls/rpcrt4/tests/server.idl
+2
-0
client.c
tools/widl/client.c
+12
-1
proxy.c
tools/widl/proxy.c
+12
-1
server.c
tools/widl/server.c
+7
-1
typegen.c
tools/widl/typegen.c
+0
-0
No files found.
dlls/rpcrt4/tests/server.c
View file @
d458a599
...
...
@@ -497,6 +497,12 @@ s_sum_L1_norms(int n, vector_t *vs)
return
sum
;
}
str_t
s_get_filename
(
void
)
{
return
(
char
*
)
__FILE__
;
}
void
s_stop
(
void
)
{
...
...
@@ -558,6 +564,7 @@ basic_tests(void)
int
x
;
str_struct_t
ss
=
{
string
};
wstr_struct_t
ws
=
{
wstring
};
str_t
str
;
ok
(
int_return
()
==
INT_CODE
,
"RPC int_return
\n
"
);
...
...
@@ -652,6 +659,9 @@ basic_tests(void)
ok
(
sum_bogus
(
&
bogus
)
==
12
,
"RPC sum_bogus
\n
"
);
check_null
(
NULL
);
str
=
get_filename
();
ok
(
!
strcmp
(
str
,
__FILE__
),
"get_filename() returned %s instead of %s
\n
"
,
str
,
__FILE__
);
}
static
void
...
...
dlls/rpcrt4/tests/server.idl
View file @
d458a599
...
...
@@ -300,5 +300,7 @@ cpp_quote("#endif")
int sum_pcarr2(int n, [size_is(, n)] int **pa);
int sum_L1_norms(int n, [size_is(n)] vector_t *vs);
str_t get_filename(void);
void stop(void);
}
tools/widl/client.c
View file @
d458a599
...
...
@@ -139,6 +139,11 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
print_client
(
"RPC_MESSAGE _RpcMessage;
\n
"
);
print_client
(
"MIDL_STUB_MESSAGE _StubMsg;
\n
"
);
if
(
!
is_void
(
def
->
type
)
&&
decl_indirect
(
def
->
type
))
{
print_client
(
"void *_p_%s = &%s;
\n
"
,
"_RetVal"
,
"_RetVal"
);
}
fprintf
(
client
,
"
\n
"
);
/* check pointers */
...
...
@@ -216,7 +221,13 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
/* unmarshal return value */
if
(
!
is_void
(
def
->
type
))
print_phase_basetype
(
client
,
indent
,
PHASE_UNMARSHAL
,
PASS_RETURN
,
def
,
"_RetVal"
);
{
if
(
decl_indirect
(
def
->
type
))
print_client
(
"MIDL_memset(&%s, 0, sizeof(%s));
\n
"
,
"_RetVal"
,
"_RetVal"
);
else
if
(
is_ptr
(
def
->
type
)
||
is_array
(
def
->
type
))
print_client
(
"%s = 0;
\n
"
,
"_RetVal"
);
write_remoting_arguments
(
client
,
indent
,
func
,
PASS_RETURN
,
PHASE_UNMARSHAL
);
}
/* update proc_offset */
if
(
func
->
args
)
...
...
tools/widl/proxy.c
View file @
d458a599
...
...
@@ -272,6 +272,11 @@ static void gen_proxy(type_t *iface, const func_t *cur, int idx,
}
print_proxy
(
"RPC_MESSAGE _RpcMessage;
\n
"
);
print_proxy
(
"MIDL_STUB_MESSAGE _StubMsg;
\n
"
);
if
(
has_ret
)
{
if
(
decl_indirect
(
def
->
type
))
print_proxy
(
"void *_p_%s = &%s;
\n
"
,
"_RetVal"
,
"_RetVal"
);
}
print_proxy
(
"
\n
"
);
/* FIXME: trace */
...
...
@@ -307,7 +312,13 @@ static void gen_proxy(type_t *iface, const func_t *cur, int idx,
write_remoting_arguments
(
proxy
,
indent
,
cur
,
PASS_OUT
,
PHASE_UNMARSHAL
);
if
(
has_ret
)
print_phase_basetype
(
proxy
,
indent
,
PHASE_UNMARSHAL
,
PASS_RETURN
,
def
,
"_RetVal"
);
{
if
(
decl_indirect
(
def
->
type
))
print_proxy
(
"MIDL_memset(&%s, 0, sizeof(%s));
\n
"
,
"_RetVal"
,
"_RetVal"
);
else
if
(
is_ptr
(
def
->
type
)
||
is_array
(
def
->
type
))
print_proxy
(
"%s = 0;
\n
"
,
"_RetVal"
);
write_remoting_arguments
(
proxy
,
indent
,
cur
,
PASS_RETURN
,
PHASE_UNMARSHAL
);
}
indent
--
;
print_proxy
(
"}
\n
"
);
...
...
tools/widl/server.c
View file @
d458a599
...
...
@@ -209,6 +209,9 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
{
write_remoting_arguments
(
server
,
indent
,
func
,
PASS_OUT
,
PHASE_BUFFERSIZE
);
if
(
!
is_void
(
def
->
type
))
write_remoting_arguments
(
server
,
indent
,
func
,
PASS_RETURN
,
PHASE_BUFFERSIZE
);
print_server
(
"_pRpcMessage->BufferLength = _StubMsg.BufferLength;
\n
"
);
fprintf
(
server
,
"
\n
"
);
print_server
(
"_Status = I_RpcGetBuffer(_pRpcMessage);
\n
"
);
...
...
@@ -226,7 +229,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
/* marshall the return value */
if
(
!
is_void
(
def
->
type
))
print_phase_basetype
(
server
,
indent
,
PHASE_MARSHAL
,
PASS_RETURN
,
def
,
"_RetVal"
);
write_remoting_arguments
(
server
,
indent
,
func
,
PASS_RETURN
,
PHASE_MARSHAL
);
indent
--
;
print_server
(
"}
\n
"
);
...
...
@@ -236,6 +239,9 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
write_remoting_arguments
(
server
,
indent
,
func
,
PASS_OUT
,
PHASE_FREE
);
if
(
!
is_void
(
def
->
type
))
write_remoting_arguments
(
server
,
indent
,
func
,
PASS_RETURN
,
PHASE_FREE
);
indent
--
;
print_server
(
"}
\n
"
);
print_server
(
"RpcEndFinally
\n
"
);
...
...
tools/widl/typegen.c
View file @
d458a599
This diff is collapsed.
Click to expand it.
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