blob: 469d3eb45e7bcdf21ac94dd3263e1b8f7cfc5005 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
|