SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
SpecsColumn.cc
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 
9 
10 
11 namespace SWC { namespace DB { namespace Specs {
12 
13 
14 
15 void Column::copy(const Column &other) {
16  cid = other.cid;
17  clear();
18  resize(other.size());
19  int i = 0;
20  for(const auto& intval : other)
21  (*this)[i++].reset(new Interval(*intval.get()));
22 }
23 
25  return emplace_back(new Interval(col_type));
26 }
27 
28 bool Column::equal(const Column &other) const noexcept {
29  if(cid != other.cid || size() != other.size())
30  return false;
31 
32  auto it2=other.cbegin();
33  for(auto it1=cbegin(); it1 != cend(); ++it1, ++it2)
34  if(!(*it1)->equal(*(*it2)))
35  return false;
36  return true;
37 }
38 
39 size_t Column::encoded_length() const noexcept {
42  for(auto& intval : *this)
43  len += intval->encoded_length();
44  return len;
45 }
46 
47 void Column::encode(uint8_t** bufp) const {
50  for(auto& intval : *this)
51  intval->encode(bufp);
52 }
53 
54 void Column::decode(const uint8_t** bufp, size_t* remainp) {
55  clear();
56  cid = Serialization::decode_vi64(bufp, remainp);
57  resize(Serialization::decode_vi32(bufp, remainp));
58  for(auto& intval : *this)
59  intval.reset(new Interval(bufp, remainp));
60 }
61 
62 void Column::print(std::ostream& out) const {
63  out << "Column(cid=" << cid
64  << " intervals=[";
65  for(auto& intval : *this) {
66  intval->print(out);
67  out << ", ";
68  }
69  out << "])";
70 }
71 
72 void Column::display(std::ostream& out, bool pretty,
73  std::string offset) const {
74  out << offset << "Column(\n"
75  << offset << " cid=" << cid << " size=" << size() << "\n"
76  << offset << " intervals=[\n";
77  for(auto& intval : *this)
78  intval->display(out, pretty, offset+" ");
79  out << offset << " ]\n"
80  << offset << ")\n";
81 }
82 
83 
84 }}}
SWC::DB::Specs::Column::display
void display(std::ostream &out, bool pretty=false, std::string offset="") const
Definition: SpecsColumn.cc:72
SWC::Core::Vector< Interval::Ptr >::resize
SWC_CAN_INLINE void resize(size_type sz, ArgsT &&... args)
Definition: Vector.h:308
SWC::DB::Specs::Column::cid
cid_t cid
Definition: SpecsColumn.h:99
SWC::Core::Vector< Interval::Ptr >::clear
SWC_CAN_INLINE void clear() noexcept(_NoExceptDestructor)
Definition: Vector.h:120
SWC::DB::Specs::Column::copy
void copy(const Column &other)
Definition: SpecsColumn.cc:15
SWC::Serialization::encoded_length_vi32
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi32(uint32_t val) noexcept
Definition: Serialization.h:234
SWC::DB::Specs::Interval::Ptr
std::shared_ptr< Interval > Ptr
Definition: SpecsInterval.h:33
SWC::DB::Types::Column
Column
Definition: Column.h:18
SpecsColumn.h
SWC::DB::Specs::Column::encoded_length
size_t SWC_PURE_FUNC encoded_length() const noexcept
Definition: SpecsColumn.cc:39
SWC::DB::Specs::Column::encode
void encode(uint8_t **bufp) const
Definition: SpecsColumn.cc:47
SWC::DB::Specs::Column::add
Interval::Ptr & add(Types::Column col_type)
Definition: SpecsColumn.cc:24
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
size
uint32_t size
Buffer size.
Definition: HeaderBufferInfo.h:47
SWC::DB::Specs::Column::print
void print(std::ostream &out) const
Definition: SpecsColumn.cc:62
Serialization.h
SWC::DB::Specs::Column::equal
bool SWC_PURE_FUNC equal(const Column &other) const noexcept
Definition: SpecsColumn.cc:28
SWC::Serialization::encoded_length_vi64
constexpr SWC_CAN_INLINE uint8_t encoded_length_vi64(uint64_t val) noexcept
Definition: Serialization.h:272
SWC::DB::Specs::Column::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: SpecsColumn.cc:54
SWC::DB::Specs::Interval
Definition: SpecsInterval.h:25
SWC::Serialization::decode_vi64
constexpr SWC_CAN_INLINE uint64_t decode_vi64(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:302
SWC::Serialization::encode_vi32
constexpr SWC_CAN_INLINE void encode_vi32(uint8_t **bufp, uint32_t val)
Definition: Serialization.h:243
SWC::DB::Specs::Column
Definition: SpecsColumn.h:18
SWC::Serialization::encode_vi64
constexpr SWC_CAN_INLINE void encode_vi64(uint8_t **bufp, uint64_t val)
Definition: Serialization.h:286
SWC::Core::Vector::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
SWC::Core::Vector< Interval::Ptr >::emplace_back
SWC_CAN_INLINE reference emplace_back(ArgsT &&... args)
Definition: Vector.h:349
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254