summaryrefslogtreecommitdiff
path: root/packages/omniorb/files/dynskel.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/omniorb/files/dynskel.patch')
-rw-r--r--packages/omniorb/files/dynskel.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/omniorb/files/dynskel.patch b/packages/omniorb/files/dynskel.patch
new file mode 100644
index 0000000000..469d3eb45e
--- /dev/null
+++ b/packages/omniorb/files/dynskel.patch
@@ -0,0 +1,49 @@
+--- src/lib/omniORB/omniidl_be/cxx/dynskel/main.py 27 Nov 2001 14:37:25 -0000 1.14.2.10
++++ src/lib/omniORB/omniidl_be/cxx/dynskel/main.py 15 May 2006 13:36:20 -0000
+@@ -474,15 +474,30 @@
+
+ elementDesc = output.StringStream()
+ prefix = config.state['Private Prefix']
++
+ # djr and jnw's "Super-Hacky Optimisation"
+ # (amended by dpg1 to be even more hacky, since char/wchar now don't work)
+- if isinstance(d_seqType.type(), idltype.Base) and \
+- not d_seqType.variable() and \
+- not d_seqType.type().kind() in [idltype.tk_char, idltype.tk_wchar] and \
+- not is_array:
++ # (amended again to cope with mixed endian doubles)
++
++ is_double = d_seqType.type().kind() == idltype.tk_double
++ is_contiguous = (isinstance(d_seqType.type(), idltype.Base) and
++ not d_seqType.variable() and
++ not d_seqType.type().kind() in [idltype.tk_char,
++ idltype.tk_wchar] and
++ not is_array)
++
++ if is_double:
++ elementDesc.out("""
++#ifndef OMNI_MIXED_ENDIAN_DOUBLE""")
++
++ if is_contiguous:
+ elementDesc.out(template.sequence_elementDesc_contiguous,
+ sequence = sequence_desc)
+- else:
++ if is_double:
++ elementDesc.out("""
++#else""")
++
++ if is_double or not is_contiguous:
+ # <---
+ required_symbols = [ prefix + "_buildDesc" + seqType_cname ]
+ assertDefined(required_symbols)
+@@ -492,6 +507,10 @@
+ thing_cname = seqType_cname,
+ thing = thing)
+
++ if is_double:
++ elementDesc.out("""
++#endif""")
++
+ # <---
+ cname = memberType_cname
+ # this is the #ifdef guard