inline a couple of tag methods.
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu May 08 11:16:32 2008 -0700 (21 months ago)
changeset 3055c908e1a82801
parent 3054 b152a62d2017
child 3056 d4bb2f7687d1
inline a couple of tag methods.
src/common/tag-buffer.cc
src/common/tag-buffer.h
     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 */