33 using vector_bytes = std::vector<uint8_t, typename std::allocator_traits<A>::template rebind_alloc<uint8_t>>;
38 virtual void serialize(std::ostream& os,
bool compact)
const = 0;
39 virtual vector_bytes serialize(
bool compact,
unsigned header_size_bytes)
const = 0;
49 hll_mode getCurMode()
const;
51 virtual double getEstimate()
const = 0;
52 virtual double getCompositeEstimate()
const = 0;
53 virtual double getUpperBound(uint8_t numStdDev)
const = 0;
54 virtual double getLowerBound(uint8_t numStdDev)
const = 0;
56 inline uint8_t getLgConfigK()
const;
58 virtual uint32_t getMemDataStart()
const = 0;
60 virtual uint8_t getPreInts()
const = 0;
64 virtual uint32_t getUpdatableSerializationBytes()
const = 0;
65 virtual uint32_t getCompactSerializationBytes()
const = 0;
67 virtual bool isCompact()
const = 0;
68 virtual bool isEmpty()
const = 0;
69 virtual bool isOutOfOrderFlag()
const = 0;
70 virtual void putOutOfOrderFlag(
bool oooFlag) = 0;
71 virtual A getAllocator()
const = 0;
72 bool isStartFullSize()
const;
76 static hll_mode extractCurMode(uint8_t modeByte);
77 uint8_t makeFlagsByte(
bool compact)
const;
78 uint8_t makeModeByte()
const;
80 const uint8_t lgConfigK_;
83 const bool startFullSize_;