proxygen
folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout Struct Reference

#include <BitVectorCoding.h>

Public Member Functions

size_t bytes () const
 
template<class Range >
BitVectorCompressedListBase< typename Range::iteratoropenList (Range &buf) const
 
MutableCompressedList allocList () const
 

Static Public Member Functions

static Layout fromUpperBoundAndSize (size_t upperBound, size_t size)
 

Public Attributes

size_t size = 0
 
size_t upperBound = 0
 
size_t bits = 0
 
size_t skipPointers = 0
 
size_t forwardPointers = 0
 

Detailed Description

template<class Value, class SkipValue, size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
struct folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout

Definition at line 176 of file BitVectorCoding.h.

Member Function Documentation

template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
MutableCompressedList folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::allocList ( ) const
inline

Definition at line 225 of file BitVectorCoding.h.

References folly::compression::BitVectorCompressedListBase< Pointer >::size, and uint8_t.

225  {
226  uint8_t* buf = nullptr;
227  if (size > 0) {
228  buf = static_cast<uint8_t*>(malloc(bytes() + 7));
229  }
230  folly::MutableByteRange bufRange(buf, bytes());
231  return openList(bufRange);
232  }
BitVectorCompressedListBase< typename Range::iterator > openList(Range &buf) const
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
size_t folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::bytes ( ) const
inline
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
static Layout folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::fromUpperBoundAndSize ( size_t  upperBound,
size_t  size 
)
inlinestatic

Definition at line 178 of file BitVectorCoding.h.

References folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::bits, folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::forwardPointers, max, folly::compression::BitVectorCompressedListBase< Pointer >::size, folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::size, folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::skipPointers, folly::compression::BitVectorCompressedListBase< Pointer >::upperBound, and folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::upperBound.

178  {
179  Layout layout;
180  layout.size = size;
181  layout.upperBound = upperBound;
182 
183  size_t bitVectorSizeInBytes = (upperBound / 8) + 1;
184  layout.bits = bitVectorSizeInBytes;
185 
186  if (skipQuantum != 0) {
187  size_t numSkipPointers = upperBound / skipQuantum;
188  layout.skipPointers = numSkipPointers * sizeof(SkipValueType);
189  }
190  if (forwardQuantum != 0) {
191  size_t numForwardPointers = size / forwardQuantum;
192  layout.forwardPointers = numForwardPointers * sizeof(SkipValueType);
193  }
194 
196 
197  return layout;
198  }
static constexpr size_t skipQuantum
LogLevel max
Definition: LogLevel.cpp:31
static constexpr size_t forwardQuantum
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
template<class Range >
BitVectorCompressedListBase<typename Range::iterator> folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::openList ( Range buf) const
inline

Definition at line 205 of file BitVectorCoding.h.

References folly::detail::advance, folly::Range< Iter >::advance(), folly::test::begin(), folly::compression::BitVectorCompressedListBase< Pointer >::bits, folly::compression::BitVectorCompressedListBase< Pointer >::data, folly::Range< Iter >::data(), folly::compression::BitVectorCompressedListBase< Pointer >::forwardPointers, folly::compression::BitVectorCompressedListBase< Pointer >::size, folly::compression::BitVectorCompressedListBase< Pointer >::skipPointers, folly::Range< Iter >::subpiece(), and folly::compression::BitVectorCompressedListBase< Pointer >::upperBound.

206  {
207  BitVectorCompressedListBase<typename Range::iterator> result;
208  result.size = size;
209  result.upperBound = upperBound;
210  result.data = buf.subpiece(0, bytes());
211  auto advance = [&](size_t n) {
212  auto begin = buf.data();
213  buf.advance(n);
214  return begin;
215  };
216 
217  result.bits = advance(bits);
218  result.skipPointers = advance(skipPointers);
219  result.forwardPointers = advance(forwardPointers);
220  CHECK_EQ(buf.data() - result.data.data(), bytes());
221 
222  return result;
223  }
auto begin(TestAdlIterable &instance)
Definition: ForeachTest.cpp:56

Member Data Documentation

template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
size_t folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::bits = 0
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
size_t folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::forwardPointers = 0
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
size_t folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::size = 0
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
size_t folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::skipPointers = 0
template<class Value , class SkipValue , size_t kSkipQuantum = 0, size_t kForwardQuantum = 0>
size_t folly::compression::BitVectorEncoder< Value, SkipValue, kSkipQuantum, kForwardQuantum >::Layout::upperBound = 0

The documentation for this struct was generated from the following file: