Andrew Talbot
08c6f507b8
widl: Remove superfluous semicolons.
2008-11-17 13:11:47 +01:00
Dmitry Timoshkov
d560b7bbb0
widl: Make the generated string pointers const as well.
2008-11-11 11:40:50 +01:00
Alexandre Julliard
cdfec4da31
widl: Implemented RpcAbnormalTermination in the generic exception handling code.
2008-09-15 18:18:16 +02:00
Alexandre Julliard
654e78aa38
widl: Implemented __finally support in client functions.
2008-09-15 18:03:56 +02:00
Alexandre Julliard
b8fb66c71a
widl: Separate declaration and initialisation for indirect arguments.
2008-09-15 16:46:33 +02:00
Alexandre Julliard
bf011b0f53
widl: Infrastructure for adding a prefix to local variable references.
2008-09-15 16:46:01 +02:00
Alexandre Julliard
3bdaba2a93
widl: Make the exception handling macros more general and use the same code everywhere.
2008-09-15 14:05:26 +02:00
Alexandre Julliard
1218aff94d
widl: Create an explicit structure for the function frame of all generated functions.
...
Store _StubMsg in the frame structure since it's needed for exception handling.
2008-09-15 14:02:26 +02:00
Alexandre Julliard
29e20b869c
widl: Replace write_name() by get_name() to make the code more readable.
2008-08-30 11:15:04 +02:00
Alexandre Julliard
c0ebae42f1
widl: Fix a couple of uninitialized variable compiler warnings.
2008-07-07 12:16:51 +02:00
Rob Shearman
d60dc3f88b
widl: Consolidate top-level parameter conformance/variance expression writing into a separate function.
...
Descend through as many pointer types as necessary to find the
fundamental type and determine whether it needs a top-level parameter
conformance/variance expression to be written.
Add support for writing top-level parameter conformance/variance
expressions for non-encapsulated unions.
2008-07-03 11:50:52 +02:00
Rob Shearman
fb224429f7
widl: Increment the buffer offset by 8 for embedded pointers inside varying arrays in varying structures.
...
The 8 bytes are for the variance and offset and are added just before
the array, as seen in the marshalling code in rpcrt4. No offset needs
to be added for non-varying structures since the buffer mark is set
after the conformance in marshalled or unmarshalled.
2008-07-02 11:38:47 +02:00
Alexandre Julliard
e213ac9aca
widl: Add some support for unencapsulated unions that need a conformance descriptor.
2008-07-01 12:25:44 +02:00
Rob Shearman
925a700574
widl: Fix type_memsize to follow aliases so that the correct size is calculated.
2008-06-24 11:48:11 +02:00
Rob Shearman
b3dde47ed7
widl: Fix crash in find_array_or_string_in_struct if the structure or union has no fields or cases.
2008-06-24 11:47:56 +02:00
Rob Shearman
28a9b94afc
widl: Fix the embedded pointer offsets in generated code when the containing structure has padding.
...
Do so by calculating the alignment of members when iterating through
the structures and adding it onto the buffer and memory offsets.
Only call type_memsize once elsewhere in the embedded pointer
processing functions since the return value will be the same from the
second call.
2008-06-23 19:25:53 +02:00
Rob Shearman
5f1de5a11d
widl: Replace code to round up values and calculate padding with macros to improve readability.
2008-06-23 19:25:38 +02:00
Rob Shearman
bb647c9b67
widl: Fix generation of the type format string for conformant-varying structures.
...
The conformance needs to be added on to the offset in the buffer so
set this before calling each the writer of each class of pointer
description in write_pointer_description.
Pass the passed in offsets to buffer and memory to
write_pointer_description_offsets in
write_varying_array_pointer_descriptions.
2008-06-21 11:13:04 +02:00
Rob Shearman
df0e38c067
widl: Create a list of statements in the whole IDL file, instead of just a list of interfaces.
2008-04-24 22:32:20 +02:00
Rob Shearman
1a0d28bf02
widl: Remove duplicated code in the form of the write_struct_expr function by enhancing write_expr to allow toplevel identifiers to be prefixed by a string, if specified.
2008-04-22 13:05:18 +02:00
Rob Shearman
39a1fa672a
widl: Use expr_resolve_type to get the type of the identifier in write_conf_or_var_desc.
...
Remove the conversion of pointer types into base types as this was only
needed due to lack of proper type resolving.
2008-04-22 13:05:04 +02:00
Rob Shearman
80ab2a7c6d
widl: Move expression functions to a new file, expr.c.
2008-04-22 13:04:58 +02:00
Rob Shearman
95ac84e20b
widl: Remove EXPR_MEMBERPTR and implement it using EXPR_PPTR and EXPR_MEMBER instead.
2008-04-22 13:04:19 +02:00
Rob Shearman
cc3682cf12
widl: Add support for comparison, exclusive or, logical not and positive operators in expressions.
2008-04-22 13:04:03 +02:00
Rob Shearman
ea9932557a
widl: Add support for '%' operator in expressions.
2008-04-21 13:36:19 +02:00
Rob Shearman
d27c7601e5
widl: Add support for arrays in expressions.
2008-04-21 13:36:19 +02:00
Rob Shearman
03d5017416
widl: Add support for "->" and "." operators in expressions.
2008-04-21 13:36:19 +02:00
Rob Shearman
6a0c5a4fe9
widl: Store function and function pointer types completely within type_t type.
2008-04-02 19:53:09 +02:00
Rob Shearman
a04b150839
widl: Add a function to get the return type of a parsed function.
...
This clarifies its use in code and makes it simpler to change the way
functions are parsed into types.
2008-04-02 19:52:49 +02:00
Rob Shearman
f8ea9ec163
widl: Make sure that string types are always written out by write_string_tfs and not write_simple_pointer.
...
This is because write_string_tfs has support for the full range of
string types, write_simple_pointer doesn't have access to the var
attributes which are needed to properly detect strings, and
write_string_tfs sets the typestring offset to after the pointer is
written and write_remoting_arg depends on this.
2008-03-27 17:33:09 +01:00
Rob Shearman
f4a9619364
widl: Fix detection of non-pointer context handles.
...
is_ptr cannot be used because it follows the chain of types into the
type which has the context_handle attribute, which is typically "void *"
and so causes these context handles to be incorrectly detected as
context handles. Instead, we can use is_aliaschain_ptr to follow the
chain of aliases without following pointers and the absence of the
context_handle attribute indicates that it must be present on a type
after following a pointer.
2008-03-27 17:33:06 +01:00
Rob Shearman
8a0cb2b5c5
widl: Use is_string_type for detecting strings in write_typeformatstring_var to make it consistent with write_remoting_arg.
...
Fix the is_string_type function used for detecting strings by only
examining aliases instead of both aliases and pointers. This is due to
the requirement that pointers to strings be handled as pointers and so
not detected as strings.
2008-03-27 17:32:58 +01:00
Dan Hipschman
2d7b1f18b1
widl: Allow is_string_type to work for typedef'd types.
2008-02-22 12:04:26 +01:00
Rob Shearman
c233ba105e
widl: Remove unused headers.
2008-02-15 11:06:21 +01:00
Rob Shearman
661b01f922
widl: Output code for initialising and freeing full pointer translation tables.
2008-02-04 11:49:13 +01:00
Rob Shearman
5af6012fba
widl: Write out code for initialising out-only client context handles.
2008-01-21 11:39:13 +01:00
Austin English
90f89fa74d
tools: Spelling fixes.
2008-01-18 12:52:09 +01:00
Rob Shearman
a3040cea58
widl: Use symbolic names for some of the context handle attributes.
2008-01-07 21:33:53 +01:00
Rob Shearman
06ed169bc5
widl: Fix context handle "cannot be null" detection.
...
The "cannot be null" attibute is applied to a parameter if and only if
it is in-only.
2008-01-07 21:33:50 +01:00
Rob Shearman
e998892a23
widl: Fix the conditions under which array freeing code is output.
...
It doesn't matter whether or not the array is declared as a pointer or
is declared using array subscripts - the array is still allocated by the
unmarshalling function and so needs to be freed.
Fix a typo that caused varying arrays never to be freed.
Fix another typo with the check for conformant arrays being performed
twice, redundantly.
2008-01-07 12:37:08 +01:00
Rob Shearman
15af19c6ec
widl: Add support for strict context handles.
2008-01-07 12:32:21 +01:00
Rob Shearman
807001441d
widl: Output calls for the new versions of the marshalling and unmarshalling routines for server context handles.
...
This needs to be done to match the call to NdrContextHandleInitialize
and because we default to using strict context handles.
2008-01-07 12:32:00 +01:00
Rob Shearman
13f9c71960
widl: Make the offset of conformant string types point to the start of the conformant string format chars, not the pointer type.
...
Otherwise, writing a type at top-level could cause the pointer format
string to be used in non-top-level places which may cause memory
corruption during freeing.
2008-01-07 12:02:57 +01:00
Rob Shearman
9aaff94fb7
widl: Check that the buffer has enough space before unmarshalling base types in generated code.
2007-12-31 17:13:46 +01:00
Rob Shearman
6e7dcde26e
widl: Add support for generating code for out-only context handles by calling NdrContextHandleInitialize.
2007-12-26 13:27:06 +01:00
Rob Shearman
3e5f7457f6
widl: Fix pointer detection in structures and arrays.
...
write_embedded_types doesn't descend into all types contained by the
array or structure, so create a new function, type_has_pointers, for the
purpose of descending into all types and returning whether or not
pointers are present.
2007-12-26 13:26:02 +01:00
Rob Shearman
7f3abe7757
widl: Fix the generation of temporary variables for declared arrays.
...
These need to include their array part so use var->type instead of
var->ref->type.
2007-12-24 13:30:33 +01:00
Rob Shearman
b57a322b02
widl: Tweak the rules for when to call pfnFree for arrays.
...
Varying arrays that aren't unmarshalled shouldn't be freed, but
conformant arrays that aren't unmarshalled should.
2007-12-21 12:43:18 +01:00
Rob Shearman
37c8d8ecac
widl: Fix the length used when clearing alignment space in generated files.
...
Only do the clearing when marshalling a base type.
2007-12-19 19:34:47 +01:00
Rob Shearman
57947d9f9c
widl: The detection of types is highly dependent on the ordering of the various type detection functions.
...
Therefore, needs_freeing would have to duplicate a lot of
write_remoting_arg in order to get the detection right. Because of
this, it is easier and will cause less problems in the future to
simply move the logic of needs_freeing into write_remoting_arg in the
appropriate handling code for the detected type.
2007-12-19 18:32:13 +01:00
Rob Shearman
b81f4c24db
widl: Only base types or reference pointers to base types don't need to be freed.
...
There are other cases where calls to Free functions can be omitted (such
as types always unmarshalled using buffer memory with no embedded
pointers), but these are easier dealt with inside the relevent case in
write_remoting_arg.
2007-12-17 11:57:25 +01:00
Rob Shearman
32cf944e9c
widl: Clear padding in the buffer due to alignment.
2007-12-17 11:57:10 +01:00
Rob Shearman
9896938fab
widl: Don't write redundant FC_RP type format out for conformant strings, unless it is a top level variable.
2007-12-14 12:23:33 +01:00
Rob Shearman
9741751962
widl: Remove some confusion in how version numbers are packed into an attribute by defining some macros for this purpose.
...
Remove unneeded includes.
2007-12-12 16:03:35 +01:00
Rob Shearman
d458a599eb
widl: Add support for non-basetype return types.
2007-12-11 18:07:05 +01:00
Rob Shearman
85e87ae829
widl: iid_is should take expressions, not just identifiers.
2007-12-10 14:40:37 +01:00
Rob Shearman
72d9569cc4
widl: Support the address-of operator in expressions.
2007-12-10 14:40:29 +01:00
Rob Shearman
8ead7fe797
widl: Make sure to generate freeing calls for all non-simple structures with pointers and pointers to user marshalled types.
2007-12-10 14:40:14 +01:00
Rob Shearman
e6f2329676
widl: Arrays should have freeing code generated on the server side, even if they are [in] parameters.
2007-12-10 14:40:10 +01:00
Rob Shearman
701a25c4b2
widl: Always write a freeing function for arrays in generated code.
...
Fix the conditions under which pfnFree is called to only include arrays
that will have been allocated, instead of being pointed to the buffer.
2007-12-10 14:40:07 +01:00
Michael Stefaniuc
7f5757f683
tools: Remove duplicate includes.
2007-11-19 13:54:52 +01:00
Dan Hipschman
a0ac63961d
widl: Don't rely on type_memsize to return 0 for all conformant arrays.
2007-11-06 13:02:56 +01:00
Dan Hipschman
b0bc8e58de
widl: Don't output a void conformance for NdrClearOutParameters.
2007-11-05 13:24:37 +01:00
Dan Hipschman
8d15820f79
widl: Handle pointers to conformant arrays (e.g., "[size_is(, n)] int **p; ").
2007-11-05 13:24:37 +01:00
Dan Hipschman
9825ac7a1a
widl: Fix a crash in compare_expr.
2007-10-25 12:54:57 +02:00
Dan Hipschman
f974facf5a
widl: Allow void pointers with iid_is attributes.
2007-10-25 12:54:52 +02:00
Dan Hipschman
ff8930f2bf
widl: Fix problems with variable-size user types.
2007-10-22 13:47:56 +02:00
Francois Gouget
599c74296c
widl: Add the trailing '\n' to an error message.
2007-10-19 11:45:52 +02:00
Dan Hipschman
1d0f9378bc
widl: Detect conformant arrays of user types correctly.
2007-10-18 12:09:23 +02:00
Dan Hipschman
4fb7a0e40e
widl: Remove printf format strings that aren't really format strings.
2007-10-18 12:09:14 +02:00
Dan Hipschman
f173addbef
widl: Use new functions need_proxy and need_stub to clean up code and avoid generating unnecessary files.
2007-10-16 11:03:49 +02:00
Dan Hipschman
acfde97b9e
rpcrt4, widl: Make pointer layouts compatible with windows; fix conformant array tests.
2007-10-11 16:24:28 +02:00
Dan Hipschman
2226ddcadf
widl: Keep track of every allocated type_t to simplify set_all_tfswrite.
2007-10-09 17:52:45 +02:00
Dan Hipschman
9650cf9bdb
widl: Correct default pointers.
2007-10-03 10:09:56 +02:00
Dan Hipschman
304852f97e
widl: Write types in the format string comments.
2007-10-03 10:09:43 +02:00
Dan Hipschman
32a2477ef5
widl: Add a declonly argument to write_type_left.
2007-10-03 10:09:31 +02:00
Dan Hipschman
4c8c425f42
widl: Add newlines to error messages that are missing them.
2007-10-03 10:08:47 +02:00
Rob Shearman
2055e636ae
widl: Generate client and server code for using context handles.
2007-09-28 10:59:49 +02:00
Dan Hipschman
cbd75d3ace
widl: Fix array alignment bug.
2007-09-27 11:07:15 +02:00
Dan Hipschman
723c8bacfa
widl: Fix string codes in pointer descriptions.
2007-09-27 10:09:38 +02:00
Dan Hipschman
347f2a2da2
widl: Fix top-level conformant arrays with pointer attributes.
2007-09-27 10:09:32 +02:00
Dan Hipschman
bb3275ce97
widl: Clean up write_conf_or_var_desc with string_of_type.
2007-09-25 11:40:29 +02:00
Dan Hipschman
767a1f26f6
widl: Handle top-level conformance for complex arrays.
2007-09-20 14:27:29 +02:00
Dan Hipschman
33da66d6c8
widl: Set the pointer description offset to zero if there are no pointers.
2007-09-20 14:27:22 +02:00
Dan Hipschman
132f06cd48
widl: Implement complex arrays.
2007-09-19 11:39:09 +02:00
Dan Hipschman
6eb07cb100
widl: Handle all buffer sizes.
2007-09-19 11:38:53 +02:00
Dan Hipschman
8df79f0c99
widl: Implement pointer descriptions for complex structures.
2007-09-19 11:38:28 +02:00
Dan Hipschman
b16de39417
widl: Fix alignment comments.
2007-09-19 11:38:16 +02:00
Rob Shearman
aa649542e2
widl: None of the non-fixed arrays have fixed sizes, so don't set the alignment to anything and return a size of 0 from get_required_buffer_size_type.
2007-09-18 10:48:06 +02:00
Rob Shearman
cf983bf15d
widl: Missing size_is or length_is attributes should generate 0xffffffff for the correlation description.
2007-09-18 10:47:58 +02:00
Rob Shearman
9a28119dd8
widl: Fix write_string_tfs for strings declared as arrays.
...
The immediate type will be FC_*ARRAY, so rtype needs to use the referred
type to get the base type.
Also update the typeformat-string offset of the type.
2007-09-17 12:57:08 +02:00
Rob Shearman
f7fbfc7da5
widl: Add support for strings embedded in structures.
2007-09-17 12:57:06 +02:00
Dan Hipschman
5e84eb9a47
widl: Add padding to the end of complex structures.
2007-09-14 14:43:13 +02:00
Dan Hipschman
ce4055c573
widl: Fix an unused parameter warning on write_conf_or_var_desc.
2007-09-13 12:44:18 +02:00
Dan Hipschman
177346f1b6
widl: Add calls to NdrFooFree for more types in server stubs.
2007-09-13 12:44:12 +02:00
Dan Hipschman
7deb62505c
widl: Use the correct functions for interface pointers in stubs.
2007-09-13 12:44:07 +02:00
Dan Hipschman
ba54c455fb
widl: Allow size_is on strings.
2007-09-10 15:29:46 +02:00
Dan Hipschman
62fb623e14
widl: Implement NDR for struct field alignment.
2007-09-10 15:29:46 +02:00
Dan Hipschman
3d036da6d3
widl: Fix top-level and callback conformances.
2007-09-10 15:29:46 +02:00
Alexandre Julliard
40dda77c52
widl: Added support for floating-point constants.
2007-07-17 14:12:18 +02:00