22 #include "ns3/fatal-error.h"
35 m_currentVectorBitSize (0),
49 : m_nixVector (o.m_nixVector),
51 m_currentVectorBitSize (o.m_currentVectorBitSize),
52 m_totalBitSize (o.m_totalBitSize)
90 if (numberOfBits > 32)
92 NS_FATAL_ERROR (
"Can't add more than 32 bits to a nix-vector at one time");
118 uint32_t tempBits = newBits;
152 m_currentVectorBitSize += numberOfBits;
162 if (numberOfBits > 32)
164 NS_FATAL_ERROR (
"Can't extract more than 32 bits to a nix-vector at one time");
167 uint32_t vectorIndex = 0;
168 uint32_t extractedBits = 0;
171 if (numberOfBits > totalRemainingBits)
173 NS_FATAL_ERROR (
"You've tried to extract too many bits of the Nix-vector, " <<
this <<
". NumberBits: "
174 << numberOfBits <<
" Remaining: " << totalRemainingBits);
177 if (numberOfBits <= 0)
179 NS_FATAL_ERROR (
"You've specified a number of bits for Nix-vector <= 0!");
186 vectorIndex = ((totalRemainingBits-1) / 32);
192 if ((numberOfBits-1) > ((totalRemainingBits-1) % 32))
194 extractedBits =
m_nixVector.at (vectorIndex) << (32 - (totalRemainingBits % 32));
195 extractedBits = extractedBits >> ((32 - (totalRemainingBits % 32))
196 - (numberOfBits - (totalRemainingBits % 32)));
198 >> (32 - (numberOfBits - (totalRemainingBits % 32))));
200 return extractedBits;
205 extractedBits =
m_nixVector.at (vectorIndex) << (32 - (totalRemainingBits % 32));
206 extractedBits = extractedBits >> (32 - (numberOfBits));
208 return extractedBits;
214 uint32_t totalSizeInBytes = 0;
218 return totalSizeInBytes;
225 uint32_t* p = buffer;
228 if (size + 4 <= maxSize)
239 if (size + 4 <= maxSize)
251 if (size + 4 <= maxSize)
263 if (size + 4 <= maxSize)
282 const uint32_t* p = buffer;
283 uint32_t sizeCheck = size - 4;
300 while (sizeCheck > 0)
312 return (sizeCheck != 0) ? 0 : 1;
320 std::vector<uint32_t>::const_reverse_iterator rIter;
323 uint32_t numBits =
BitCount (*rIter);
368 uint32_t bitCount = 0;
370 if (numberOfNeighbors < 2)
376 for (numberOfNeighbors -= 1; numberOfNeighbors != 0; numberOfNeighbors >>= 1)
389 for (; bitCount > 0; bitCount--)
397 for (; bitCount > 1; bitCount--)
406 os << decimalNum % 2;
423 if ((uint32_t)(
sizeof (uint32_t)*8) > bitCount)
425 for (uint32_t i = ((
sizeof (uint32_t)*8)-bitCount); i > 0; i--)
435 os << decimalNum % 2;