3
* Author: Peter G. Jensen
5
* Created on 11 March 2016, 14:15
9
#ifndef ALIGNEDENCODER_H
10
#define ALIGNEDENCODER_H
13
#include "binarywrapper.h"
15
using namespace ptrie;
20
typedef binarywrapper_t scratchpad_t;
22
AlignedEncoder(uint32_t places, uint32_t k);
26
size_t encode(const uint32_t* data, unsigned char type);
28
void decode(uint32_t* destination, const unsigned char* source);
30
binarywrapper_t& scratchpad()
35
unsigned char getType(uint32_t sum, uint32_t pwt, bool same, uint32_t val) const;
37
size_t size(const uchar* data) const;
39
uint32_t tokenBytes(uint32_t ntokens) const;
41
uint32_t writeBitVector(size_t offset, const uint32_t* data);
43
uint32_t writeTwoBitVector(size_t offset, const uint32_t* data);
46
uint32_t writeTokens(size_t offset, const uint32_t* data);
49
uint32_t writeTokenCounts(size_t offset, const uint32_t* data);
51
uint32_t writePlaces(size_t offset, const uint32_t* data);
53
uint32_t readBitVector(uint32_t* destination, const unsigned char* source, uint32_t offset, uint32_t value);
55
uint32_t readTwoBitVector(uint32_t* destination, const unsigned char* source, uint32_t offset);
57
uint32_t readPlaces(uint32_t* destination, const unsigned char* source, uint32_t offset, uint32_t value);
60
uint32_t readTokens(uint32_t* destination, const unsigned char* source, uint32_t offset);
63
uint32_t readPlaceTokenCounts(uint32_t* destination, const unsigned char* source, uint32_t offset) const;
66
size_t placeTokenCountsSize(const unsigned char* source, uint32_t offset) const;
69
uint32_t readBitTokenCounts(uint32_t* destination, const unsigned char* source, uint32_t offset) const;
72
size_t bitTokenCountsSize(const unsigned char* source, uint32_t offset) const;
78
// dummy value for template
79
scratchpad_t _scratchpad;
84
#endif /* ALIGNEDENCODER_H */