summaryrefslogtreecommitdiff
path: root/TAO/tao/CDR.cpp
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-09-16 15:41:31 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-09-16 15:41:31 +0000
commitdf8e20c93ce430040051a8c258cb53d8a472528d (patch)
treef5d06b3cb3f006177d466bcf4a71d9aee28f0601 /TAO/tao/CDR.cpp
parent575356db76433daf9091b6e6b97f4e9fc19ef547 (diff)
downloadATCD-df8e20c93ce430040051a8c258cb53d8a472528d.tar.gz
ChangeLogTag:Wed Sep 16 09:14:16 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/CDR.cpp')
-rw-r--r--TAO/tao/CDR.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/TAO/tao/CDR.cpp b/TAO/tao/CDR.cpp
index d34a4c43896..30a03c0105d 100644
--- a/TAO/tao/CDR.cpp
+++ b/TAO/tao/CDR.cpp
@@ -896,33 +896,39 @@ TAO_InputCDR::read_array (void* x,
else
{
// I cannot see any fast way out of this....
- typedef void (*SWAPPER)(const char*, char*);
- SWAPPER swapper;
+ char *target = ACE_reinterpret_cast(char*,x);
+ char *end = target + size*length;
switch (size)
{
case 2:
- swapper = CDR::swap_2;
+ for (; target != end; target += size, buf += size)
+ {
+ CDR::swap_2(buf, target);
+ }
break;
case 4:
- swapper = CDR::swap_4;
+ for (; target != end; target += size, buf += size)
+ {
+ CDR::swap_4(buf, target);
+ }
break;
case 8:
- swapper = CDR::swap_8;
+ for (; target != end; target += size, buf += size)
+ {
+ CDR::swap_8(buf, target);
+ }
break;
case 16:
- swapper = CDR::swap_16;
+ for (; target != end; target += size, buf += size)
+ {
+ CDR::swap_16(buf, target);
+ }
break;
default:
// TODO: print something?
this->good_bit_ = 0;
return 0;
}
- char *target = ACE_reinterpret_cast(char*,x);
- char *end = target + size*length;
- for (; target != end; target += size, buf += size)
- {
- (*swapper)(buf, target);
- }
}
#else
ACE_OS::memcpy (x, buf, size*length);