SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
SpecsScan.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 
8 
9 
10 namespace SWC { namespace DB { namespace Specs {
11 
12 
13 
14 bool Scan::equal(const Scan &other) const noexcept {
15  if(columns.size() != other.columns.size() || !other.flags.equal(flags))
16  return false;
17 
18  auto it2 = other.columns.cbegin();
19  for(auto it1 = columns.cbegin(); it1 != columns.cend(); ++it1, ++it2)
20  if(!it1->equal(*it2))
21  return false;
22  return true;
23 }
24 
25 size_t Scan::encoded_length() const noexcept {
27  for(auto& col : columns)
28  len += col.encoded_length();
29  return len + flags.encoded_length();
30 }
31 
32 void Scan::encode(uint8_t** bufp) const {
34  for(auto& col : columns)
35  col.encode(bufp);
36  flags.encode(bufp);
37 }
38 
39 void Scan::decode(const uint8_t** bufp, size_t* remainp) {
40  free();
41  uint32_t len = Serialization::decode_vi32(bufp, remainp);
42  columns.reserve(len);
43  for(; len; --len)
44  columns.emplace_back(bufp, remainp);
45  flags.decode(bufp, remainp);
46 }
47 
48 void Scan::print(std::ostream& out) const {
49  out << "Scan(columns=[";
50  for(auto& col : columns) {
51  col.print(out);
52  out << ", ";
53  }
54  flags.print(out << "], flags=");
55  out << ')';
56 }
57 
58 void Scan::display(std::ostream& out, bool pretty, std::string offset) const {
59  out << offset << "SpecsScan(\n"
60  << offset << " columns=[\n";
61  for(auto& col : columns)
62  col.display(out, pretty, " ");
63  out << offset << " ]\n";
64 
65  out << offset << " Flags(";
66  flags.display(out);
67  out << ")\n";
68  out << offset << ")\n";
69 }
70 
71 
72 }}}
SWC::DB::Specs::Scan
Definition: SpecsScan.h:21
SWC::DB::Specs::Scan::encode
void encode(uint8_t **bufp) const
Definition: SpecsScan.cc:32
SpecsScan.h
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::Scan::print
void print(std::ostream &out) const
Definition: SpecsScan.cc:48
SWC::DB::Specs::Scan::equal
bool SWC_PURE_FUNC equal(const Scan &other) const noexcept
Definition: SpecsScan.cc:14
SWC::DB::Specs::Scan::encoded_length
size_t SWC_PURE_FUNC encoded_length() const noexcept
Definition: SpecsScan.cc:25
SWC::DB::Specs::Scan::columns
Columns columns
Definition: SpecsScan.h:101
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::DB::Specs::Scan::free
SWC_CAN_INLINE void free() noexcept
Definition: SpecsScan.h:73
SWC::DB::Specs::Flags::display
void display(std::ostream &out) const
Definition: SpecsFlags.cc:20
Serialization.h
SWC::DB::Specs::Flags::encoded_length
constexpr SWC_CAN_INLINE size_t encoded_length() const noexcept
Definition: SpecsFlags.h:101
SWC::DB::Specs::Scan::decode
void decode(const uint8_t **bufp, size_t *remainp)
Definition: SpecsScan.cc:39
SWC::Serialization::encode_vi32
constexpr SWC_CAN_INLINE void encode_vi32(uint8_t **bufp, uint32_t val)
Definition: Serialization.h:243
SWC::DB::Specs::Flags::print
void print(std::ostream &out) const
Definition: SpecsFlags.cc:15
SWC::DB::Specs::Flags::encode
SWC_CAN_INLINE void encode(uint8_t **bufp) const
Definition: SpecsFlags.h:110
SWC::DB::Specs::Scan::flags
Flags flags
Definition: SpecsScan.h:102
SWC::DB::Specs::Flags::decode
SWC_CAN_INLINE void decode(const uint8_t **bufp, size_t *remainp)
Definition: SpecsFlags.h:119
flags
uint8_t flags
Flags.
Definition: Header.h:55
SWC::Core::Vector::size
constexpr SWC_CAN_INLINE size_type size() const noexcept
Definition: Vector.h:189
SWC::DB::Specs::Scan::display
void display(std::ostream &out, bool pretty=true, std::string offset="") const
Definition: SpecsScan.cc:58
SWC::Core::Vector::emplace_back
SWC_CAN_INLINE reference emplace_back(ArgsT &&... args)
Definition: Vector.h:349
SWC::Core::Vector::reserve
SWC_CAN_INLINE void reserve(size_type cap)
Definition: Vector.h:288
SWC::Serialization::decode_vi32
constexpr SWC_CAN_INLINE uint32_t decode_vi32(const uint8_t **bufp, size_t *remainp)
Definition: Serialization.h:254