diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-09-16 15:41:31 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-09-16 15:41:31 +0000 |
commit | df8e20c93ce430040051a8c258cb53d8a472528d (patch) | |
tree | f5d06b3cb3f006177d466bcf4a71d9aee28f0601 /TAO/tao/CDR.cpp | |
parent | 575356db76433daf9091b6e6b97f4e9fc19ef547 (diff) | |
download | ATCD-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.cpp | 30 |
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); |