Don't collapse runs of whitespace to a single space, instead replace
each whitespace with one space.
Leave the expression as-is if it contains one or more double quotes
as we don't want to change the value of string literals, and any
expression containing double quotes won't currently work in the context
where we need to replace newlines anyway.
Fixes#3127 better
This was resulting in incorrect generated C# and Java code. For
some cases such as `#define CONSTANT 1.0f` this was a regression
introduced in 4.2.0 when we started more correctly wrapping these
as `float` rather than `double`.
Fixes#1917
Support parsing `sizeof(X)` for any expression or type X by skipping
balanced parentheses. We don't need to actually parse X since the type
of sizeof is always size_t.
Fixes#2919
Adding full support for these in expressions seems hard to do without
introducing conflicts into the parser grammar, but in fact all reported
cases have had parentheses around the comparison and we can support that
with a few restrictions on the left side of `<`.
Fixes#80 and #635. Also https://sourceforge.net/p/swig/bugs/1139/