Flex  0.17.9
nbr.h
Go to the documentation of this file.
1 
16 #ifndef STORAGES_RT_MUTABLE_GRAPH_CSR_NBR_H_
17 #define STORAGES_RT_MUTABLE_GRAPH_CSR_NBR_H_
18 
19 #include "grape/types.h"
20 
25 
26 namespace gs {
27 
28 template <typename EDATA_T>
29 struct ImmutableNbr {
30  ImmutableNbr() = default;
32  : neighbor(rhs.neighbor), data(rhs.data) {}
33  ~ImmutableNbr() = default;
34 
36  neighbor = rhs.neighbor;
37  data = rhs.data;
38  return *this;
39  }
40 
41  const EDATA_T& get_data() const { return data; }
42  vid_t get_neighbor() const { return neighbor; }
43 
44  void set_data(const EDATA_T& val) { data = val; }
45  void set_neighbor(vid_t neighbor) { this->neighbor = neighbor; }
46 
47  bool exists() const { return neighbor != std::numeric_limits<vid_t>::max(); }
48 
50  EDATA_T data;
51 };
52 
53 template <>
54 struct __attribute__((packed)) ImmutableNbr<Date> {
55  ImmutableNbr() = default;
56  ImmutableNbr(const ImmutableNbr& rhs)
57  : neighbor(rhs.neighbor), data(rhs.data) {}
58  ~ImmutableNbr() = default;
59 
60  ImmutableNbr& operator=(const ImmutableNbr& rhs) {
61  neighbor = rhs.neighbor;
62  data = rhs.data;
63  return *this;
64  }
65 
66  const Date& get_data() const { return data; }
67  vid_t get_neighbor() const { return neighbor; }
68 
69  void set_data(const Date& val) { data = val; }
70  void set_neighbor(vid_t neighbor) { this->neighbor = neighbor; }
71 
72  bool exists() const { return neighbor != std::numeric_limits<vid_t>::max(); }
73 
74  vid_t neighbor;
75  Date data;
76 };
77 
78 template <>
79 struct ImmutableNbr<grape::EmptyType> {
80  ImmutableNbr() = default;
82  ~ImmutableNbr() = default;
83 
85  neighbor = rhs.neighbor;
86  return *this;
87  }
88 
89  void set_data(const grape::EmptyType&) {}
90  void set_neighbor(vid_t neighbor) { this->neighbor = neighbor; }
91  const grape::EmptyType& get_data() const { return data; }
92  vid_t get_neighbor() const { return neighbor; }
93  union {
95  grape::EmptyType data;
96  };
97 };
98 
99 template <typename EDATA_T>
101  public:
104  ImmutableNbrSlice() = default;
106  : ptr_(rhs.ptr_), size_(rhs.size_) {}
107  ~ImmutableNbrSlice() = default;
108 
109  void set_size(int size) { size_ = size; }
110  int size() const { return size_; }
111 
112  void set_begin(const_nbr_ptr_t ptr) { ptr_ = ptr; }
113 
114  const_nbr_ptr_t begin() const { return ptr_; }
115  const_nbr_ptr_t end() const { return ptr_ + size_; }
116 
118  ImmutableNbrSlice ret;
119  ret.set_begin(nullptr);
120  ret.set_size(0);
121  return ret;
122  }
123 
124  private:
126  int size_;
127 };
128 
129 template <>
130 class ImmutableNbrSlice<std::string_view> {
131  public:
132  struct ColumnNbr {
135 
137  : ptr_(ptr), column_(column) {}
138  vid_t get_neighbor() const { return ptr_->neighbor; }
139  std::string_view get_data() const { return column_.get_view(ptr_->data); }
140 
141  const ColumnNbr& operator*() const { return *this; }
142  const ColumnNbr* operator->() const { return this; }
143  const ColumnNbr& operator=(const ColumnNbr& nbr) const {
144  ptr_ = nbr.ptr_;
145  return *this;
146  }
147  bool operator==(const ColumnNbr& nbr) const { return ptr_ == nbr.ptr_; }
148  bool operator!=(const ColumnNbr& nbr) const { return ptr_ != nbr.ptr_; }
149  const ColumnNbr& operator++() const {
150  ++ptr_;
151  return *this;
152  }
153 
154  const ColumnNbr& operator+=(size_t n) const {
155  ptr_ += n;
156  return *this;
157  }
158 
159  size_t operator-(const ColumnNbr& nbr) const { return ptr_ - nbr.ptr_; }
160 
161  bool operator<(const ColumnNbr& nbr) const { return ptr_ < nbr.ptr_; }
162 
165  };
166  using const_nbr_t = const ColumnNbr;
167  using const_nbr_ptr_t = const ColumnNbr;
168  ImmutableNbrSlice(const StringColumn& column) : slice_(), column_(column) {}
170  : slice_(rhs.slice_), column_(rhs.column_) {}
171  ~ImmutableNbrSlice() = default;
172  void set_size(int size) { slice_.set_size(size); }
173  int size() const { return slice_.size(); }
174 
175  void set_begin(const ImmutableNbr<size_t>* ptr) { slice_.set_begin(ptr); }
176 
177  const ColumnNbr begin() const { return ColumnNbr(slice_.begin(), column_); }
178  const ColumnNbr end() const { return ColumnNbr(slice_.end(), column_); }
179 
180  static ImmutableNbrSlice empty(const StringColumn& column) {
181  ImmutableNbrSlice ret(column);
182  ret.set_begin(nullptr);
183  ret.set_size(0);
184  return ret;
185  }
186 
187  private:
190 };
191 
192 template <typename EDATA_T>
193 struct MutableNbr {
194  MutableNbr() = default;
195  MutableNbr(const MutableNbr& rhs)
196  : neighbor(rhs.neighbor),
197  timestamp(rhs.timestamp.load()),
198  data(rhs.data) {}
199  ~MutableNbr() = default;
200 
202  neighbor = rhs.neighbor;
203  timestamp.store(rhs.timestamp.load());
204  data = rhs.data;
205  return *this;
206  }
207 
208  const EDATA_T& get_data() const { return data; }
209  vid_t get_neighbor() const { return neighbor; }
210  timestamp_t get_timestamp() const { return timestamp.load(); }
211 
212  void set_data(const EDATA_T& val, timestamp_t ts) {
213  data = val;
214  timestamp.store(ts);
215  }
216  void set_neighbor(vid_t neighbor) { this->neighbor = neighbor; }
217  void set_timestamp(timestamp_t ts) { timestamp.store(ts); }
218 
220  std::atomic<timestamp_t> timestamp;
221  EDATA_T data;
222 };
223 
224 template <>
225 struct MutableNbr<grape::EmptyType> {
226  MutableNbr() = default;
227  MutableNbr(const MutableNbr& rhs)
228  : neighbor(rhs.neighbor), timestamp(rhs.timestamp.load()) {}
229  ~MutableNbr() = default;
230 
232  neighbor = rhs.neighbor;
233  timestamp.store(rhs.timestamp.load());
234  return *this;
235  }
236 
237  void set_data(const grape::EmptyType&, timestamp_t ts) {
238  timestamp.store(ts);
239  }
240  void set_neighbor(vid_t neighbor) { this->neighbor = neighbor; }
241  void set_timestamp(timestamp_t ts) { timestamp.store(ts); }
242  const grape::EmptyType& get_data() const { return data; }
243  vid_t get_neighbor() const { return neighbor; }
244  timestamp_t get_timestamp() const { return timestamp.load(); }
246  union {
247  std::atomic<timestamp_t> timestamp;
248  grape::EmptyType data;
249  };
250 };
251 
252 template <typename EDATA_T>
254  public:
257  MutableNbrSlice() : ptr_(nullptr), size_(0){};
259  : ptr_(rhs.ptr_), size_(rhs.size_) {}
260  ~MutableNbrSlice() = default;
261 
262  void set_size(int size) { size_ = size; }
263  int size() const { return size_; }
264 
265  void set_begin(const_nbr_ptr_t ptr) { ptr_ = ptr; }
266 
267  const_nbr_ptr_t begin() const { return ptr_; }
268  const_nbr_ptr_t end() const { return ptr_ + size_; }
269 
271  MutableNbrSlice ret;
272  ret.set_begin(nullptr);
273  ret.set_size(0);
274  return ret;
275  }
276 
277  private:
279  int size_;
280 };
281 
282 template <>
284  public:
285  struct MutableTableNbr {
288 
290  : ptr_(ptr), table_(table) {}
291  vid_t get_neighbor() const { return ptr_->neighbor; }
292  timestamp_t get_timestamp() const { return ptr_->timestamp.load(); }
293  RecordView get_data() const { return RecordView(ptr_->data, &table_); }
294 
295  const MutableTableNbr& operator*() const { return *this; }
296  const MutableTableNbr* operator->() const { return this; }
297  const MutableTableNbr& operator=(const MutableTableNbr& nbr) const {
298  ptr_ = nbr.ptr_;
299  return *this;
300  }
301  bool operator==(const MutableTableNbr& nbr) const {
302  return ptr_ == nbr.ptr_;
303  }
304  bool operator!=(const MutableTableNbr& nbr) const {
305  return ptr_ != nbr.ptr_;
306  }
307  const MutableTableNbr& operator++() const {
308  ++ptr_;
309  return *this;
310  }
311 
312  const MutableTableNbr& operator+=(size_t n) const {
313  ptr_ += n;
314  return *this;
315  }
316 
317  size_t operator-(const MutableTableNbr& nbr) const {
318  return ptr_ - nbr.ptr_;
319  }
320 
321  bool operator<(const MutableTableNbr& nbr) const { return ptr_ < nbr.ptr_; }
322 
324  const Table& table_;
325  };
326  using const_nbr_t = const MutableTableNbr;
327  using const_nbr_ptr_t = const MutableTableNbr;
329  : slice_(slice), table_(table) {}
331  : slice_(rhs.slice_), table_(rhs.table_) {}
332  ~MutableNbrSlice() = default;
333 
334  void set_size(int size) { slice_.set_size(size); }
335  int size() const { return slice_.size(); }
336  int field_num() const { return table_.col_num(); }
337 
338  void set_begin(const MutableNbr<size_t>* ptr) { slice_.set_begin(ptr); }
339 
340  const MutableTableNbr begin() const {
341  return MutableTableNbr(slice_.begin(), table_);
342  }
343 
344  const MutableTableNbr end() const {
345  return MutableTableNbr(slice_.end(), table_);
346  }
347  static MutableNbrSlice empty(const Table& table) {
349  return ret;
350  }
352  const Table& table_;
353 };
354 
355 template <>
356 class MutableNbrSlice<std::string_view> {
357  public:
358  struct MutableColumnNbr {
361 
363  : ptr_(ptr), column_(column) {}
364  vid_t get_neighbor() const { return ptr_->neighbor; }
365  std::string_view get_data() const { return column_.get_view(ptr_->data); }
366  timestamp_t get_timestamp() const { return ptr_->timestamp.load(); }
367 
368  const MutableColumnNbr& operator*() const { return *this; }
369  const MutableColumnNbr* operator->() const { return this; }
370  const MutableColumnNbr& operator=(const MutableColumnNbr& nbr) const {
371  ptr_ = nbr.ptr_;
372  return *this;
373  }
374  bool operator==(const MutableColumnNbr& nbr) const {
375  return ptr_ == nbr.ptr_;
376  }
377  bool operator!=(const MutableColumnNbr& nbr) const {
378  return ptr_ != nbr.ptr_;
379  }
380  const MutableColumnNbr& operator++() const {
381  ++ptr_;
382  return *this;
383  }
384 
385  const MutableColumnNbr& operator+=(size_t n) const {
386  ptr_ += n;
387  return *this;
388  }
389 
390  size_t operator-(const MutableColumnNbr& nbr) const {
391  return ptr_ - nbr.ptr_;
392  }
393 
394  bool operator<(const MutableColumnNbr& nbr) const {
395  return ptr_ < nbr.ptr_;
396  }
397 
400  };
401  using const_nbr_t = const MutableColumnNbr;
402  using const_nbr_ptr_t = const MutableColumnNbr;
404  : slice_(slice), column_(column) {}
406  : slice_(rhs.slice_), column_(rhs.column_) {}
407  ~MutableNbrSlice() = default;
408  void set_size(int size) { slice_.set_size(size); }
409  int size() const { return slice_.size(); }
410 
411  void set_begin(const MutableNbr<size_t>* ptr) { slice_.set_begin(ptr); }
412 
413  const MutableColumnNbr begin() const {
414  return MutableColumnNbr(slice_.begin(), column_);
415  }
416  const MutableColumnNbr end() const {
417  return MutableColumnNbr(slice_.end(), column_);
418  }
419 
420  static MutableNbrSlice empty(const StringColumn& column) {
422  return ret;
423  }
424 
425  private:
428 };
429 
430 template <typename EDATA_T>
432  public:
435  MutableNbrSliceMut() : ptr_(nullptr), size_(0){};
436  ~MutableNbrSliceMut() = default;
437 
438  void set_size(int size) { size_ = size; }
439  int size() const { return size_; }
440 
441  void set_begin(nbr_t* ptr) { ptr_ = ptr; }
442 
443  nbr_t* begin() { return ptr_; }
444  nbr_t* end() { return ptr_ + size_; }
445 
447  MutableNbrSliceMut ret;
448  ret.set_begin(nullptr);
449  ret.set_size(0);
450  return ret;
451  }
452 
453  private:
455  int size_;
456 };
457 
458 template <>
459 class MutableNbrSliceMut<std::string_view> {
460  public:
461  struct MutableColumnNbr {
463 
465  : ptr_(ptr), column_(column) {}
466  vid_t neighbor() const { return ptr_->neighbor; }
467  std::string_view data() { return column_.get_view(ptr_->data); }
468  vid_t get_neighbor() const { return ptr_->neighbor; }
469  const std::string_view get_data() const {
470  return column_.get_view(ptr_->data);
471  }
472  timestamp_t get_timestamp() const { return ptr_->timestamp.load(); }
473  size_t get_index() const { return ptr_->data; }
474  void set_data(const std::string_view& sw, timestamp_t ts) {
475  column_.set_value(ptr_->data, sw);
476  ptr_->timestamp.store(ts);
477  }
478  void set_neighbor(vid_t neighbor) { ptr_->neighbor = neighbor; }
479 
480  void set_timestamp(timestamp_t ts) { ptr_->timestamp.store(ts); }
481 
482  const MutableColumnNbr& operator*() const { return *this; }
483  MutableColumnNbr& operator*() { return *this; }
484  MutableColumnNbr& operator=(const MutableColumnNbr& nbr) {
485  ptr_ = nbr.ptr_;
486  return *this;
487  }
488  bool operator==(const MutableColumnNbr& nbr) const {
489  return ptr_ == nbr.ptr_;
490  }
491  bool operator!=(const MutableColumnNbr& nbr) const {
492  return ptr_ != nbr.ptr_;
493  }
494 
495  MutableColumnNbr& operator++() {
496  ptr_++;
497  return *this;
498  }
499  MutableColumnNbr& operator+=(size_t n) {
500  ptr_ += n;
501  return *this;
502  }
503 
504  bool operator<(const MutableColumnNbr& nbr) { return ptr_ < nbr.ptr_; }
505 
508  };
509  using nbr_ptr_t = MutableColumnNbr;
510 
512  : slice_(slice), column_(column) {}
513  ~MutableNbrSliceMut() = default;
514  void set_size(int size) { slice_.set_size(size); }
515  int size() const { return slice_.size(); }
516 
517  void set_begin(MutableNbr<size_t>* ptr) { slice_.set_begin(ptr); }
518 
519  MutableColumnNbr begin() { return MutableColumnNbr(slice_.begin(), column_); }
520  MutableColumnNbr end() { return MutableColumnNbr(slice_.end(), column_); }
521 
524  return ret;
525  }
526 
527  private:
530 };
531 
532 template <>
534  public:
535  struct MutableTableNbr {
537 
538  MutableTableNbr(nbr_t* ptr, Table& table) : ptr_(ptr), table_(table) {}
539  vid_t neighbor() const { return ptr_->neighbor; }
540  vid_t get_neighbor() const { return ptr_->neighbor; }
541  timestamp_t get_timestamp() const { return ptr_->timestamp.load(); }
542  size_t get_index() const { return ptr_->data; }
543  RecordView get_data() const { return RecordView(ptr_->data, &table_); }
544 
545  void set_data(const Record& r, timestamp_t ts) {
546  grape::InArchive in;
547  for (size_t i = 0; i < r.len; ++i) {
548  in << r.props[i];
549  }
550  grape::OutArchive out;
551  out.SetSlice(in.GetBuffer(), in.GetSize());
552  table_.ingest(ptr_->data, out);
553  ptr_->timestamp.store(ts);
554  }
555  void set_neighbor(vid_t neighbor) { ptr_->neighbor = neighbor; }
556 
557  void set_timestamp(timestamp_t ts) { ptr_->timestamp.store(ts); }
558 
559  const MutableTableNbr& operator*() const { return *this; }
560  MutableTableNbr& operator*() { return *this; }
561  const MutableTableNbr* operator->() const { return this; }
562  MutableTableNbr* operator->() { return this; }
563  MutableTableNbr& operator=(const MutableTableNbr& nbr) {
564  ptr_ = nbr.ptr_;
565  return *this;
566  }
567  bool operator==(const MutableTableNbr& nbr) const {
568  return ptr_ == nbr.ptr_;
569  }
570  bool operator!=(const MutableTableNbr& nbr) const {
571  return ptr_ != nbr.ptr_;
572  }
573 
574  const MutableTableNbr& operator++() const {
575  ptr_++;
576  return *this;
577  }
578  const MutableTableNbr& operator+=(size_t n) const {
579  ptr_ += n;
580  return *this;
581  }
582  size_t operator-(const MutableTableNbr& nbr) const {
583  return ptr_ - nbr.ptr_;
584  }
585 
586  bool operator<(const MutableTableNbr& nbr) { return ptr_ < nbr.ptr_; }
587 
588  mutable nbr_t* ptr_;
590  };
591  using nbr_ptr_t = MutableTableNbr;
592 
594  : slice_(slice), table_(table) {}
595  ~MutableNbrSliceMut() = default;
596  void set_size(int size) { slice_.set_size(size); }
597  int size() const { return slice_.size(); }
598  int field_num() const { return table_.col_num(); }
599 
600  void set_begin(MutableNbr<size_t>* ptr) { slice_.set_begin(ptr); }
601 
602  nbr_ptr_t begin() { return MutableTableNbr(slice_.begin(), table_); }
603  nbr_ptr_t end() { return MutableTableNbr(slice_.end(), table_); }
604 
605  static MutableNbrSliceMut empty(Table& table) {
607  return ret;
608  }
609 
612 };
613 } // namespace gs
614 
615 #endif // STORAGES_RT_MUTABLE_GRAPH_CSR_NBR_H_
grape
Definition: types.h:33
gs::MutableNbrSlice< std::string_view >::MutableNbrSlice
MutableNbrSlice(const MutableNbrSlice &rhs)
Definition: nbr.h:405
gs::MutableNbr< grape::EmptyType >::get_timestamp
timestamp_t get_timestamp() const
Definition: nbr.h:244
gs::ImmutableNbr::set_neighbor
void set_neighbor(vid_t neighbor)
Definition: nbr.h:45
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::ptr_
nbr_t * ptr_
Definition: nbr.h:506
gs::ImmutableNbr::ImmutableNbr
ImmutableNbr(const ImmutableNbr &rhs)
Definition: nbr.h:31
gs::MutableNbrSliceMut::set_size
void set_size(int size)
Definition: nbr.h:438
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator++
MutableColumnNbr & operator++()
Definition: nbr.h:495
gs::MutableNbrSliceMut< std::string_view >::MutableNbrSliceMut
MutableNbrSliceMut(MutableNbrSliceMut< size_t > slice, StringColumn &column)
Definition: nbr.h:511
gs::MutableNbrSlice< RecordView >::MutableTableNbr::ptr_
const_nbr_ptr_t ptr_
Definition: nbr.h:323
gs::MutableNbr::get_timestamp
timestamp_t get_timestamp() const
Definition: nbr.h:210
gs::MutableNbrSlice::ptr_
const_nbr_ptr_t ptr_
Definition: nbr.h:278
gs::MutableNbrSliceMut< RecordView >::table_
Table & table_
Definition: nbr.h:611
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::set_data
void set_data(const Record &r, timestamp_t ts)
Definition: nbr.h:545
gs::MutableNbrSlice< std::string_view >::slice_
MutableNbrSlice< size_t > slice_
Definition: nbr.h:426
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator*
const MutableColumnNbr & operator*() const
Definition: nbr.h:482
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator++
const MutableTableNbr & operator++() const
Definition: nbr.h:574
gs::MutableNbr::set_data
void set_data(const EDATA_T &val, timestamp_t ts)
Definition: nbr.h:212
gs::MutableNbrSliceMut< std::string_view >::set_begin
void set_begin(MutableNbr< size_t > *ptr)
Definition: nbr.h:517
gs::MutableNbrSlice< RecordView >::begin
const MutableTableNbr begin() const
Definition: nbr.h:340
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator<
bool operator<(const MutableColumnNbr &nbr) const
Definition: nbr.h:394
gs::MutableNbrSlice< RecordView >::end
const MutableTableNbr end() const
Definition: nbr.h:344
gs::MutableNbrSliceMut< std::string_view >::nbr_ptr_t
MutableColumnNbr nbr_ptr_t
Definition: nbr.h:509
gs::timestamp_t
uint32_t timestamp_t
Definition: types.h:30
gs::MutableNbrSlice::set_size
void set_size(int size)
Definition: nbr.h:262
types.h
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator++
const ColumnNbr & operator++() const
Definition: nbr.h:149
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator++
const MutableTableNbr & operator++() const
Definition: nbr.h:307
gs::MutableNbr< grape::EmptyType >::set_timestamp
void set_timestamp(timestamp_t ts)
Definition: nbr.h:241
gs::MutableNbrSlice::set_begin
void set_begin(const_nbr_ptr_t ptr)
Definition: nbr.h:265
gs::MutableNbrSlice< RecordView >::field_num
int field_num() const
Definition: nbr.h:336
gs::ImmutableNbr< grape::EmptyType >::neighbor
vid_t neighbor
Definition: nbr.h:94
gs::MutableNbrSliceMut< RecordView >::end
nbr_ptr_t end()
Definition: nbr.h:603
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:364
gs::MutableNbrSlice< std::string_view >::column_
const StringColumn & column_
Definition: nbr.h:427
gs::ImmutableNbrSlice
Definition: nbr.h:100
gs::MutableNbrSlice< RecordView >::MutableTableNbr::get_timestamp
timestamp_t get_timestamp() const
Definition: nbr.h:292
gs::ImmutableNbrSlice::set_begin
void set_begin(const_nbr_ptr_t ptr)
Definition: nbr.h:112
gs::MutableNbrSlice< RecordView >::MutableTableNbr::table_
const Table & table_
Definition: nbr.h:324
gs::MutableNbrSlice< RecordView >::MutableTableNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:291
column.h
gs::ImmutableNbr::ImmutableNbr
ImmutableNbr()=default
gs::vid_t
uint32_t vid_t
Definition: types.h:31
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator=
MutableColumnNbr & operator=(const MutableColumnNbr &nbr)
Definition: nbr.h:484
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::table_
Table & table_
Definition: nbr.h:589
gs::ImmutableNbr::neighbor
vid_t neighbor
Definition: nbr.h:49
gs::MutableNbrSlice::MutableNbrSlice
MutableNbrSlice()
Definition: nbr.h:257
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator=
const MutableTableNbr & operator=(const MutableTableNbr &nbr) const
Definition: nbr.h:297
gs::ImmutableNbrSlice::ptr_
const_nbr_ptr_t ptr_
Definition: nbr.h:125
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator-
size_t operator-(const ColumnNbr &nbr) const
Definition: nbr.h:159
gs::MutableNbrSliceMut::end
nbr_t * end()
Definition: nbr.h:444
gs::MutableNbrSlice::size_
int size_
Definition: nbr.h:279
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator-
size_t operator-(const MutableTableNbr &nbr) const
Definition: nbr.h:582
gs::MutableNbr< grape::EmptyType >::timestamp
std::atomic< timestamp_t > timestamp
Definition: nbr.h:247
gs::ImmutableNbr::~ImmutableNbr
~ImmutableNbr()=default
gs::MutableNbr::operator=
MutableNbr & operator=(const MutableNbr &rhs)
Definition: nbr.h:201
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator++
const MutableColumnNbr & operator++() const
Definition: nbr.h:380
gs::MutableNbr::MutableNbr
MutableNbr(const MutableNbr &rhs)
Definition: nbr.h:195
gs::MutableNbrSlice< std::string_view >::begin
const MutableColumnNbr begin() const
Definition: nbr.h:413
gs::MutableNbrSliceMut::size
int size() const
Definition: nbr.h:439
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator*
const MutableColumnNbr & operator*() const
Definition: nbr.h:368
gs::MutableNbrSliceMut< RecordView >::set_size
void set_size(int size)
Definition: nbr.h:596
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:138
gs
Definition: adj_list.h:23
gs::MutableNbrSlice< std::string_view >::MutableNbrSlice
MutableNbrSlice(MutableNbrSlice< size_t > slice, const StringColumn &column)
Definition: nbr.h:403
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator<
bool operator<(const MutableTableNbr &nbr)
Definition: nbr.h:586
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::column_
StringColumn & column_
Definition: nbr.h:507
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::ptr_
nbr_t * ptr_
Definition: nbr.h:588
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator!=
bool operator!=(const MutableTableNbr &nbr) const
Definition: nbr.h:570
gs::MutableNbrSlice< RecordView >::const_nbr_t
const MutableTableNbr const_nbr_t
Definition: nbr.h:326
gs::ImmutableNbr::get_data
const EDATA_T & get_data() const
Definition: nbr.h:41
gs::MutableNbrSlice< RecordView >::empty
static MutableNbrSlice empty(const Table &table)
Definition: nbr.h:347
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator->
const MutableColumnNbr * operator->() const
Definition: nbr.h:369
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator*
const MutableTableNbr & operator*() const
Definition: nbr.h:559
gs::MutableNbr< grape::EmptyType >::set_data
void set_data(const grape::EmptyType &, timestamp_t ts)
Definition: nbr.h:237
gs::MutableNbrSlice::begin
const_nbr_ptr_t begin() const
Definition: nbr.h:267
gs::MutableNbr
Definition: nbr.h:193
gs::MutableNbr::timestamp
std::atomic< timestamp_t > timestamp
Definition: nbr.h:220
gs::ImmutableNbrSlice::end
const_nbr_ptr_t end() const
Definition: nbr.h:115
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator+=
const ColumnNbr & operator+=(size_t n) const
Definition: nbr.h:154
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator*
MutableColumnNbr & operator*()
Definition: nbr.h:483
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::get_data
RecordView get_data() const
Definition: nbr.h:543
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::get_timestamp
timestamp_t get_timestamp() const
Definition: nbr.h:472
gs::ImmutableNbrSlice::empty
static ImmutableNbrSlice empty()
Definition: nbr.h:117
gs::Table
Definition: table.h:30
gs::ImmutableNbrSlice::ImmutableNbrSlice
ImmutableNbrSlice()=default
gs::ImmutableNbrSlice< std::string_view >::size
int size() const
Definition: nbr.h:173
gs::ImmutableNbr< grape::EmptyType >::set_neighbor
void set_neighbor(vid_t neighbor)
Definition: nbr.h:90
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator==
bool operator==(const MutableColumnNbr &nbr) const
Definition: nbr.h:374
gs::Record::len
size_t len
Definition: types.h:314
gs::MutableNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:209
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator==
bool operator==(const MutableTableNbr &nbr) const
Definition: nbr.h:301
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator=
const ColumnNbr & operator=(const ColumnNbr &nbr) const
Definition: nbr.h:143
gs::Record::props
Any * props
Definition: types.h:315
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator-
size_t operator-(const MutableTableNbr &nbr) const
Definition: nbr.h:317
gs::ImmutableNbrSlice::set_size
void set_size(int size)
Definition: nbr.h:109
gs::MutableNbr::set_timestamp
void set_timestamp(timestamp_t ts)
Definition: nbr.h:217
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::set_neighbor
void set_neighbor(vid_t neighbor)
Definition: nbr.h:478
gs::ImmutableNbrSlice< std::string_view >::empty
static ImmutableNbrSlice empty(const StringColumn &column)
Definition: nbr.h:180
gs::MutableNbrSlice< RecordView >::table_
const Table & table_
Definition: nbr.h:352
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator+=
const MutableTableNbr & operator+=(size_t n) const
Definition: nbr.h:578
gs::MutableNbrSlice::end
const_nbr_ptr_t end() const
Definition: nbr.h:268
gs::MutableNbr::data
EDATA_T data
Definition: nbr.h:221
gs::ImmutableNbrSlice< std::string_view >::const_nbr_t
const ColumnNbr const_nbr_t
Definition: nbr.h:166
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::column_
const StringColumn & column_
Definition: nbr.h:399
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::MutableColumnNbr
MutableColumnNbr(const_nbr_ptr_t ptr, const StringColumn &column)
Definition: nbr.h:362
gs::MutableNbr< grape::EmptyType >::neighbor
vid_t neighbor
Definition: nbr.h:245
gs::Record
Definition: types.h:300
gs::MutableNbr::set_neighbor
void set_neighbor(vid_t neighbor)
Definition: nbr.h:216
gs::TypedColumn< std::string_view >
Definition: column.h:338
gs::ImmutableNbr::exists
bool exists() const
Definition: nbr.h:47
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::get_data
const std::string_view get_data() const
Definition: nbr.h:469
gs::MutableNbrSliceMut< RecordView >::MutableNbrSliceMut
MutableNbrSliceMut(MutableNbrSliceMut< size_t > slice, Table &table)
Definition: nbr.h:593
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator!=
bool operator!=(const MutableColumnNbr &nbr) const
Definition: nbr.h:491
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::set_timestamp
void set_timestamp(timestamp_t ts)
Definition: nbr.h:480
gs::ImmutableNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:42
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator->
const MutableTableNbr * operator->() const
Definition: nbr.h:296
gs::ImmutableNbrSlice::~ImmutableNbrSlice
~ImmutableNbrSlice()=default
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator!=
bool operator!=(const MutableColumnNbr &nbr) const
Definition: nbr.h:377
gs::MutableNbrSlice< RecordView >::MutableTableNbr::MutableTableNbr
MutableTableNbr(const_nbr_ptr_t ptr, const Table &table)
Definition: nbr.h:289
gs::ImmutableNbrSlice::begin
const_nbr_ptr_t begin() const
Definition: nbr.h:114
gs::MutableNbrSlice< std::string_view >::empty
static MutableNbrSlice empty(const StringColumn &column)
Definition: nbr.h:420
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::get_timestamp
timestamp_t get_timestamp() const
Definition: nbr.h:541
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator<
bool operator<(const MutableColumnNbr &nbr)
Definition: nbr.h:504
gs::ImmutableNbr< grape::EmptyType >::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:92
gs::ImmutableNbrSlice< std::string_view >::ImmutableNbrSlice
ImmutableNbrSlice(const StringColumn &column)
Definition: nbr.h:168
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::column_
const StringColumn & column_
Definition: nbr.h:164
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::get_timestamp
timestamp_t get_timestamp() const
Definition: nbr.h:366
gs::MutableNbrSlice< RecordView >::size
int size() const
Definition: nbr.h:335
gs::__attribute__
struct __attribute__((packed)) ImmutableNbr< Date >
Definition: nbr.h:54
gs::ImmutableNbr::set_data
void set_data(const EDATA_T &val)
Definition: nbr.h:44
gs::MutableNbrSliceMut< std::string_view >::size
int size() const
Definition: nbr.h:515
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::set_data
void set_data(const std::string_view &sw, timestamp_t ts)
Definition: nbr.h:474
gs::MutableNbrSliceMut< RecordView >::empty
static MutableNbrSliceMut empty(Table &table)
Definition: nbr.h:605
gs::MutableNbrSlice< RecordView >::MutableNbrSlice
MutableNbrSlice(MutableNbrSlice< size_t > slice, const Table &table)
Definition: nbr.h:328
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator=
const MutableColumnNbr & operator=(const MutableColumnNbr &nbr) const
Definition: nbr.h:370
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::MutableColumnNbr
MutableColumnNbr(nbr_t *ptr, StringColumn &column)
Definition: nbr.h:464
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator!=
bool operator!=(const ColumnNbr &nbr) const
Definition: nbr.h:148
gs::ImmutableNbr::data
EDATA_T data
Definition: nbr.h:50
gs::MutableNbrSliceMut::~MutableNbrSliceMut
~MutableNbrSliceMut()=default
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator*
const MutableTableNbr & operator*() const
Definition: nbr.h:295
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator->
const MutableTableNbr * operator->() const
Definition: nbr.h:561
gs::MutableNbr< grape::EmptyType >::operator=
MutableNbr & operator=(const MutableNbr &rhs)
Definition: nbr.h:231
gs::MutableNbr::MutableNbr
MutableNbr()=default
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::get_index
size_t get_index() const
Definition: nbr.h:542
gs::MutableNbrSlice< std::string_view >::set_begin
void set_begin(const MutableNbr< size_t > *ptr)
Definition: nbr.h:411
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator==
bool operator==(const ColumnNbr &nbr) const
Definition: nbr.h:147
gs::MutableNbrSliceMut::set_begin
void set_begin(nbr_t *ptr)
Definition: nbr.h:441
gs::ImmutableNbrSlice< std::string_view >::set_size
void set_size(int size)
Definition: nbr.h:172
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:540
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator<
bool operator<(const MutableTableNbr &nbr) const
Definition: nbr.h:321
gs::ImmutableNbrSlice< std::string_view >::column_
const StringColumn & column_
Definition: nbr.h:189
gs::ImmutableNbr< grape::EmptyType >::data
grape::EmptyType data
Definition: nbr.h:95
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator->
const ColumnNbr * operator->() const
Definition: nbr.h:142
gs::ImmutableNbrSlice< std::string_view >::slice_
ImmutableNbrSlice< size_t > slice_
Definition: nbr.h:188
gs::MutableNbrSlice< std::string_view >::const_nbr_ptr_t
const MutableColumnNbr const_nbr_ptr_t
Definition: nbr.h:402
gs::MutableNbr::neighbor
vid_t neighbor
Definition: nbr.h:219
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator==
bool operator==(const MutableTableNbr &nbr) const
Definition: nbr.h:567
gs::MutableNbrSliceMut
Definition: nbr.h:431
types.h
gs::MutableNbrSlice< std::string_view >::end
const MutableColumnNbr end() const
Definition: nbr.h:416
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::get_data
std::string_view get_data() const
Definition: nbr.h:365
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator*
MutableTableNbr & operator*()
Definition: nbr.h:560
std
Definition: loading_config.h:232
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator!=
bool operator!=(const MutableTableNbr &nbr) const
Definition: nbr.h:304
gs::MutableNbrSliceMut< std::string_view >::slice_
MutableNbrSliceMut< size_t > slice_
Definition: nbr.h:528
gs::MutableNbrSlice< std::string_view >::size
int size() const
Definition: nbr.h:409
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::neighbor
vid_t neighbor() const
Definition: nbr.h:539
gs::ImmutableNbr< grape::EmptyType >::set_data
void set_data(const grape::EmptyType &)
Definition: nbr.h:89
gs::MutableNbrSliceMut< RecordView >::set_begin
void set_begin(MutableNbr< size_t > *ptr)
Definition: nbr.h:600
gs::MutableNbrSliceMut< RecordView >::nbr_ptr_t
MutableTableNbr nbr_ptr_t
Definition: nbr.h:591
gs::MutableNbrSlice::~MutableNbrSlice
~MutableNbrSlice()=default
gs::ImmutableNbrSlice::ImmutableNbrSlice
ImmutableNbrSlice(const ImmutableNbrSlice &rhs)
Definition: nbr.h:105
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:468
gs::MutableNbr< grape::EmptyType >::data
grape::EmptyType data
Definition: nbr.h:248
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator*
const ColumnNbr & operator*() const
Definition: nbr.h:141
gs::MutableNbr< grape::EmptyType >::set_neighbor
void set_neighbor(vid_t neighbor)
Definition: nbr.h:240
gs::MutableNbrSliceMut::MutableNbrSliceMut
MutableNbrSliceMut()
Definition: nbr.h:435
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::ColumnNbr
ColumnNbr(const_nbr_ptr_t ptr, const StringColumn &column)
Definition: nbr.h:136
gs::MutableNbrSliceMut::begin
nbr_t * begin()
Definition: nbr.h:443
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::set_neighbor
void set_neighbor(vid_t neighbor)
Definition: nbr.h:555
gs::MutableNbr::get_data
const EDATA_T & get_data() const
Definition: nbr.h:208
gs::ImmutableNbr
Definition: nbr.h:29
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::get_data
std::string_view get_data() const
Definition: nbr.h:139
gs::ImmutableNbrSlice< std::string_view >::ImmutableNbrSlice
ImmutableNbrSlice(const ImmutableNbrSlice &rhs)
Definition: nbr.h:169
gs::MutableNbrSlice< RecordView >::slice_
MutableNbrSlice< size_t > slice_
Definition: nbr.h:351
gs::MutableNbr< grape::EmptyType >::get_neighbor
vid_t get_neighbor() const
Definition: nbr.h:243
gs::MutableNbr< grape::EmptyType >::MutableNbr
MutableNbr(const MutableNbr &rhs)
Definition: nbr.h:227
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator-
size_t operator-(const MutableColumnNbr &nbr) const
Definition: nbr.h:390
gs::ImmutableNbr::operator=
ImmutableNbr & operator=(const ImmutableNbr &rhs)
Definition: nbr.h:35
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::get_index
size_t get_index() const
Definition: nbr.h:473
gs::MutableNbr< grape::EmptyType >::get_data
const grape::EmptyType & get_data() const
Definition: nbr.h:242
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator=
MutableTableNbr & operator=(const MutableTableNbr &nbr)
Definition: nbr.h:563
gs::MutableNbrSliceMut< RecordView >::begin
nbr_ptr_t begin()
Definition: nbr.h:602
gs::MutableNbrSlice::MutableNbrSlice
MutableNbrSlice(const MutableNbrSlice &rhs)
Definition: nbr.h:258
gs::MutableNbrSlice< RecordView >::MutableTableNbr::operator+=
const MutableTableNbr & operator+=(size_t n) const
Definition: nbr.h:312
gs::MutableNbrSliceMut< std::string_view >::set_size
void set_size(int size)
Definition: nbr.h:514
gs::MutableNbrSlice::size
int size() const
Definition: nbr.h:263
gs::MutableNbrSliceMut::ptr_
nbr_t * ptr_
Definition: nbr.h:454
gs::ImmutableNbr< grape::EmptyType >::operator=
ImmutableNbr & operator=(const ImmutableNbr &rhs)
Definition: nbr.h:84
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::operator+=
const MutableColumnNbr & operator+=(size_t n) const
Definition: nbr.h:385
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::ptr_
const_nbr_ptr_t ptr_
Definition: nbr.h:163
gs::MutableNbrSliceMut< RecordView >::field_num
int field_num() const
Definition: nbr.h:598
gs::MutableNbrSlice::empty
static MutableNbrSlice empty()
Definition: nbr.h:270
gs::ImmutableNbrSlice< std::string_view >::set_begin
void set_begin(const ImmutableNbr< size_t > *ptr)
Definition: nbr.h:175
gs::MutableNbrSliceMut::empty
static MutableNbrSliceMut empty()
Definition: nbr.h:446
gs::RecordView
Definition: types.h:285
gs::MutableNbrSlice< std::string_view >::set_size
void set_size(int size)
Definition: nbr.h:408
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator+=
MutableColumnNbr & operator+=(size_t n)
Definition: nbr.h:499
gs::MutableNbrSlice< RecordView >::const_nbr_ptr_t
const MutableTableNbr const_nbr_ptr_t
Definition: nbr.h:327
gs::ImmutableNbrSlice::size
int size() const
Definition: nbr.h:110
gs::MutableNbrSliceMut< RecordView >::slice_
MutableNbrSliceMut< size_t > slice_
Definition: nbr.h:610
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::set_timestamp
void set_timestamp(timestamp_t ts)
Definition: nbr.h:557
gs::MutableNbrSliceMut< std::string_view >::empty
static MutableNbrSliceMut empty(StringColumn &column)
Definition: nbr.h:522
gs::MutableNbrSliceMut< std::string_view >::column_
StringColumn & column_
Definition: nbr.h:529
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::operator==
bool operator==(const MutableColumnNbr &nbr) const
Definition: nbr.h:488
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::data
std::string_view data()
Definition: nbr.h:467
gs::MutableNbrSlice< RecordView >::set_begin
void set_begin(const MutableNbr< size_t > *ptr)
Definition: nbr.h:338
gs::MutableNbrSliceMut::size_
int size_
Definition: nbr.h:455
gs::MutableNbrSlice< RecordView >::MutableTableNbr::get_data
RecordView get_data() const
Definition: nbr.h:293
gs::ImmutableNbrSlice::size_
int size_
Definition: nbr.h:126
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::operator->
MutableTableNbr * operator->()
Definition: nbr.h:562
gs::MutableNbrSliceMut< std::string_view >::end
MutableColumnNbr end()
Definition: nbr.h:520
gs::ImmutableNbr< grape::EmptyType >::ImmutableNbr
ImmutableNbr(const ImmutableNbr &rhs)
Definition: nbr.h:81
gs::ImmutableNbrSlice< std::string_view >::ColumnNbr::operator<
bool operator<(const ColumnNbr &nbr) const
Definition: nbr.h:161
gs::ImmutableNbrSlice< std::string_view >::end
const ColumnNbr end() const
Definition: nbr.h:178
table.h
gs::MutableNbrSlice
Definition: nbr.h:253
gs::ImmutableNbrSlice< std::string_view >::const_nbr_ptr_t
const ColumnNbr const_nbr_ptr_t
Definition: nbr.h:167
gs::MutableNbrSlice< RecordView >::MutableNbrSlice
MutableNbrSlice(const MutableNbrSlice &rhs)
Definition: nbr.h:330
gs::MutableNbrSliceMut< RecordView >::MutableTableNbr::MutableTableNbr
MutableTableNbr(nbr_t *ptr, Table &table)
Definition: nbr.h:538
gs::MutableNbrSliceMut< RecordView >::size
int size() const
Definition: nbr.h:597
gs::MutableNbrSliceMut< std::string_view >::begin
MutableColumnNbr begin()
Definition: nbr.h:519
gs::MutableNbrSliceMut< std::string_view >::MutableColumnNbr::neighbor
vid_t neighbor() const
Definition: nbr.h:466
gs::MutableNbr::~MutableNbr
~MutableNbr()=default
gs::MutableNbrSlice< std::string_view >::MutableColumnNbr::ptr_
const_nbr_ptr_t ptr_
Definition: nbr.h:398
gs::ImmutableNbr< grape::EmptyType >::get_data
const grape::EmptyType & get_data() const
Definition: nbr.h:91
gs::ImmutableNbrSlice< std::string_view >::begin
const ColumnNbr begin() const
Definition: nbr.h:177
gs::MutableNbrSlice< RecordView >::set_size
void set_size(int size)
Definition: nbr.h:334
gs::MutableNbrSlice< std::string_view >::const_nbr_t
const MutableColumnNbr const_nbr_t
Definition: nbr.h:401