inline a couple of tag methods.
--- a/src/common/tag-buffer.cc Wed May 07 15:23:46 2008 -0700
+++ b/src/common/tag-buffer.cc Thu May 08 11:16:32 2008 -0700
@@ -23,6 +23,8 @@
namespace ns3 {
+#ifndef TAG_BUFFER_USE_INLINE
+
void
TagBuffer::WriteU8 (uint8_t v)
{
@@ -30,6 +32,7 @@
*m_current = v;
m_current++;
}
+
void
TagBuffer::WriteU16 (uint16_t data)
{
@@ -44,6 +47,48 @@
WriteU8 ((data >> 16) & 0xff);
WriteU8 ((data >> 24) & 0xff);
}
+
+
+uint8_t
+TagBuffer::ReadU8 (void)
+{
+ NS_ASSERT (m_current + 1 <= m_end);
+ uint8_t v;
+ v = *m_current;
+ m_current++;
+ return v;
+}
+
+uint16_t
+TagBuffer::ReadU16 (void)
+{
+ uint8_t byte0 = ReadU8 ();
+ uint8_t byte1 = ReadU8 ();
+ uint16_t data = byte1;
+ data <<= 8;
+ data |= byte0;
+ return data;
+}
+uint32_t
+TagBuffer::ReadU32 (void)
+{
+ uint8_t byte0 = ReadU8 ();
+ uint8_t byte1 = ReadU8 ();
+ uint8_t byte2 = ReadU8 ();
+ uint8_t byte3 = ReadU8 ();
+ uint32_t data = byte3;
+ data <<= 8;
+ data |= byte2;
+ data <<= 8;
+ data |= byte1;
+ data <<= 8;
+ data |= byte0;
+ return data;
+}
+
+#endif /* TAG_BUFFER_USE_INLINE */
+
+
void
TagBuffer::WriteU64 (uint64_t data)
{
@@ -73,41 +118,6 @@
WriteU8 (*buffer);
}
}
-uint8_t
-TagBuffer::ReadU8 (void)
-{
- NS_ASSERT (m_current + 1 <= m_end);
- uint8_t v;
- v = *m_current;
- m_current++;
- return v;
-}
-uint16_t
-TagBuffer::ReadU16 (void)
-{
- uint8_t byte0 = ReadU8 ();
- uint8_t byte1 = ReadU8 ();
- uint16_t data = byte1;
- data <<= 8;
- data |= byte0;
- return data;
-}
-uint32_t
-TagBuffer::ReadU32 (void)
-{
- uint8_t byte0 = ReadU8 ();
- uint8_t byte1 = ReadU8 ();
- uint8_t byte2 = ReadU8 ();
- uint8_t byte3 = ReadU8 ();
- uint32_t data = byte3;
- data <<= 8;
- data |= byte2;
- data <<= 8;
- data |= byte1;
- data <<= 8;
- data |= byte0;
- return data;
-}
uint64_t
TagBuffer::ReadU64 (void)
{
@@ -180,3 +190,4 @@
}
} // namespace ns3
+
--- a/src/common/tag-buffer.h Wed May 07 15:23:46 2008 -0700
+++ b/src/common/tag-buffer.h Thu May 08 11:16:32 2008 -0700
@@ -22,6 +22,14 @@
#include <stdint.h>
+#define TAG_BUFFER_USE_INLINE 1
+
+#ifdef TAG_BUFFER_USE_INLINE
+#define TAG_BUFFER_INLINE inline
+#else
+#define TAG_BUFFER_INLINE
+#endif
+
namespace ns3 {
/**
@@ -36,15 +44,15 @@
TagBuffer (uint8_t *start, uint8_t *end);
void TrimAtEnd (uint32_t trim);
- void WriteU8 (uint8_t v);
- void WriteU16 (uint16_t v);
- void WriteU32 (uint32_t v);
+ TAG_BUFFER_INLINE void WriteU8 (uint8_t v);
+ TAG_BUFFER_INLINE void WriteU16 (uint16_t v);
+ TAG_BUFFER_INLINE void WriteU32 (uint32_t v);
void WriteU64 (uint64_t v);
void WriteDouble (double v);
void Write (const uint8_t *buffer, uint32_t size);
- uint8_t ReadU8 (void);
- uint16_t ReadU16 (void);
- uint32_t ReadU32 (void);
+ TAG_BUFFER_INLINE uint8_t ReadU8 (void);
+ TAG_BUFFER_INLINE uint16_t ReadU16 (void);
+ TAG_BUFFER_INLINE uint32_t ReadU32 (void);
uint64_t ReadU64 (void);
double ReadDouble (void);
void Read (uint8_t *buffer, uint32_t size);
@@ -58,4 +66,74 @@
} // namespace ns3
+#ifdef TAG_BUFFER_USE_INLINE
+
+#include "ns3/assert.h"
+
+namespace ns3 {
+
+void
+TagBuffer::WriteU8 (uint8_t v)
+{
+ NS_ASSERT (m_current + 1 <= m_end);
+ *m_current = v;
+ m_current++;
+}
+
+void
+TagBuffer::WriteU16 (uint16_t data)
+{
+ WriteU8 ((data >> 0) & 0xff);
+ WriteU8 ((data >> 8) & 0xff);
+}
+void
+TagBuffer::WriteU32 (uint32_t data)
+{
+ WriteU8 ((data >> 0) & 0xff);
+ WriteU8 ((data >> 8) & 0xff);
+ WriteU8 ((data >> 16) & 0xff);
+ WriteU8 ((data >> 24) & 0xff);
+}
+
+uint8_t
+TagBuffer::ReadU8 (void)
+{
+ NS_ASSERT (m_current + 1 <= m_end);
+ uint8_t v;
+ v = *m_current;
+ m_current++;
+ return v;
+}
+
+uint16_t
+TagBuffer::ReadU16 (void)
+{
+ uint8_t byte0 = ReadU8 ();
+ uint8_t byte1 = ReadU8 ();
+ uint16_t data = byte1;
+ data <<= 8;
+ data |= byte0;
+ return data;
+}
+uint32_t
+TagBuffer::ReadU32 (void)
+{
+ uint8_t byte0 = ReadU8 ();
+ uint8_t byte1 = ReadU8 ();
+ uint8_t byte2 = ReadU8 ();
+ uint8_t byte3 = ReadU8 ();
+ uint32_t data = byte3;
+ data <<= 8;
+ data |= byte2;
+ data <<= 8;
+ data |= byte1;
+ data <<= 8;
+ data |= byte0;
+ return data;
+}
+
+} // namespace ns3
+
+#endif /* TAG_BUFFER_USE_INLINE */
+
#endif /* TAG_BUFFER_H */