inline a couple of tag methods.
1.1 --- a/src/common/tag-buffer.cc Wed May 07 15:23:46 2008 -0700
1.2 +++ b/src/common/tag-buffer.cc Thu May 08 11:16:32 2008 -0700
1.3 @@ -23,6 +23,8 @@
1.4
1.5 namespace ns3 {
1.6
1.7 +#ifndef TAG_BUFFER_USE_INLINE
1.8 +
1.9 void
1.10 TagBuffer::WriteU8 (uint8_t v)
1.11 {
1.12 @@ -30,6 +32,7 @@
1.13 *m_current = v;
1.14 m_current++;
1.15 }
1.16 +
1.17 void
1.18 TagBuffer::WriteU16 (uint16_t data)
1.19 {
1.20 @@ -44,6 +47,48 @@
1.21 WriteU8 ((data >> 16) & 0xff);
1.22 WriteU8 ((data >> 24) & 0xff);
1.23 }
1.24 +
1.25 +
1.26 +uint8_t
1.27 +TagBuffer::ReadU8 (void)
1.28 +{
1.29 + NS_ASSERT (m_current + 1 <= m_end);
1.30 + uint8_t v;
1.31 + v = *m_current;
1.32 + m_current++;
1.33 + return v;
1.34 +}
1.35 +
1.36 +uint16_t
1.37 +TagBuffer::ReadU16 (void)
1.38 +{
1.39 + uint8_t byte0 = ReadU8 ();
1.40 + uint8_t byte1 = ReadU8 ();
1.41 + uint16_t data = byte1;
1.42 + data <<= 8;
1.43 + data |= byte0;
1.44 + return data;
1.45 +}
1.46 +uint32_t
1.47 +TagBuffer::ReadU32 (void)
1.48 +{
1.49 + uint8_t byte0 = ReadU8 ();
1.50 + uint8_t byte1 = ReadU8 ();
1.51 + uint8_t byte2 = ReadU8 ();
1.52 + uint8_t byte3 = ReadU8 ();
1.53 + uint32_t data = byte3;
1.54 + data <<= 8;
1.55 + data |= byte2;
1.56 + data <<= 8;
1.57 + data |= byte1;
1.58 + data <<= 8;
1.59 + data |= byte0;
1.60 + return data;
1.61 +}
1.62 +
1.63 +#endif /* TAG_BUFFER_USE_INLINE */
1.64 +
1.65 +
1.66 void
1.67 TagBuffer::WriteU64 (uint64_t data)
1.68 {
1.69 @@ -73,41 +118,6 @@
1.70 WriteU8 (*buffer);
1.71 }
1.72 }
1.73 -uint8_t
1.74 -TagBuffer::ReadU8 (void)
1.75 -{
1.76 - NS_ASSERT (m_current + 1 <= m_end);
1.77 - uint8_t v;
1.78 - v = *m_current;
1.79 - m_current++;
1.80 - return v;
1.81 -}
1.82 -uint16_t
1.83 -TagBuffer::ReadU16 (void)
1.84 -{
1.85 - uint8_t byte0 = ReadU8 ();
1.86 - uint8_t byte1 = ReadU8 ();
1.87 - uint16_t data = byte1;
1.88 - data <<= 8;
1.89 - data |= byte0;
1.90 - return data;
1.91 -}
1.92 -uint32_t
1.93 -TagBuffer::ReadU32 (void)
1.94 -{
1.95 - uint8_t byte0 = ReadU8 ();
1.96 - uint8_t byte1 = ReadU8 ();
1.97 - uint8_t byte2 = ReadU8 ();
1.98 - uint8_t byte3 = ReadU8 ();
1.99 - uint32_t data = byte3;
1.100 - data <<= 8;
1.101 - data |= byte2;
1.102 - data <<= 8;
1.103 - data |= byte1;
1.104 - data <<= 8;
1.105 - data |= byte0;
1.106 - return data;
1.107 -}
1.108 uint64_t
1.109 TagBuffer::ReadU64 (void)
1.110 {
1.111 @@ -180,3 +190,4 @@
1.112 }
1.113
1.114 } // namespace ns3
1.115 +
2.1 --- a/src/common/tag-buffer.h Wed May 07 15:23:46 2008 -0700
2.2 +++ b/src/common/tag-buffer.h Thu May 08 11:16:32 2008 -0700
2.3 @@ -22,6 +22,14 @@
2.4
2.5 #include <stdint.h>
2.6
2.7 +#define TAG_BUFFER_USE_INLINE 1
2.8 +
2.9 +#ifdef TAG_BUFFER_USE_INLINE
2.10 +#define TAG_BUFFER_INLINE inline
2.11 +#else
2.12 +#define TAG_BUFFER_INLINE
2.13 +#endif
2.14 +
2.15 namespace ns3 {
2.16
2.17 /**
2.18 @@ -36,15 +44,15 @@
2.19 TagBuffer (uint8_t *start, uint8_t *end);
2.20 void TrimAtEnd (uint32_t trim);
2.21
2.22 - void WriteU8 (uint8_t v);
2.23 - void WriteU16 (uint16_t v);
2.24 - void WriteU32 (uint32_t v);
2.25 + TAG_BUFFER_INLINE void WriteU8 (uint8_t v);
2.26 + TAG_BUFFER_INLINE void WriteU16 (uint16_t v);
2.27 + TAG_BUFFER_INLINE void WriteU32 (uint32_t v);
2.28 void WriteU64 (uint64_t v);
2.29 void WriteDouble (double v);
2.30 void Write (const uint8_t *buffer, uint32_t size);
2.31 - uint8_t ReadU8 (void);
2.32 - uint16_t ReadU16 (void);
2.33 - uint32_t ReadU32 (void);
2.34 + TAG_BUFFER_INLINE uint8_t ReadU8 (void);
2.35 + TAG_BUFFER_INLINE uint16_t ReadU16 (void);
2.36 + TAG_BUFFER_INLINE uint32_t ReadU32 (void);
2.37 uint64_t ReadU64 (void);
2.38 double ReadDouble (void);
2.39 void Read (uint8_t *buffer, uint32_t size);
2.40 @@ -58,4 +66,74 @@
2.41
2.42 } // namespace ns3
2.43
2.44 +#ifdef TAG_BUFFER_USE_INLINE
2.45 +
2.46 +#include "ns3/assert.h"
2.47 +
2.48 +namespace ns3 {
2.49 +
2.50 +void
2.51 +TagBuffer::WriteU8 (uint8_t v)
2.52 +{
2.53 + NS_ASSERT (m_current + 1 <= m_end);
2.54 + *m_current = v;
2.55 + m_current++;
2.56 +}
2.57 +
2.58 +void
2.59 +TagBuffer::WriteU16 (uint16_t data)
2.60 +{
2.61 + WriteU8 ((data >> 0) & 0xff);
2.62 + WriteU8 ((data >> 8) & 0xff);
2.63 +}
2.64 +void
2.65 +TagBuffer::WriteU32 (uint32_t data)
2.66 +{
2.67 + WriteU8 ((data >> 0) & 0xff);
2.68 + WriteU8 ((data >> 8) & 0xff);
2.69 + WriteU8 ((data >> 16) & 0xff);
2.70 + WriteU8 ((data >> 24) & 0xff);
2.71 +}
2.72 +
2.73 +uint8_t
2.74 +TagBuffer::ReadU8 (void)
2.75 +{
2.76 + NS_ASSERT (m_current + 1 <= m_end);
2.77 + uint8_t v;
2.78 + v = *m_current;
2.79 + m_current++;
2.80 + return v;
2.81 +}
2.82 +
2.83 +uint16_t
2.84 +TagBuffer::ReadU16 (void)
2.85 +{
2.86 + uint8_t byte0 = ReadU8 ();
2.87 + uint8_t byte1 = ReadU8 ();
2.88 + uint16_t data = byte1;
2.89 + data <<= 8;
2.90 + data |= byte0;
2.91 + return data;
2.92 +}
2.93 +uint32_t
2.94 +TagBuffer::ReadU32 (void)
2.95 +{
2.96 + uint8_t byte0 = ReadU8 ();
2.97 + uint8_t byte1 = ReadU8 ();
2.98 + uint8_t byte2 = ReadU8 ();
2.99 + uint8_t byte3 = ReadU8 ();
2.100 + uint32_t data = byte3;
2.101 + data <<= 8;
2.102 + data |= byte2;
2.103 + data <<= 8;
2.104 + data |= byte1;
2.105 + data <<= 8;
2.106 + data |= byte0;
2.107 + return data;
2.108 +}
2.109 +
2.110 +} // namespace ns3
2.111 +
2.112 +#endif /* TAG_BUFFER_USE_INLINE */
2.113 +
2.114 #endif /* TAG_BUFFER_H */