delegation.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013-2020 Regents of the University of California.
4  *
5  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6  *
7  * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License as published by the Free Software
9  * Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13  * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14  *
15  * You should have received copies of the GNU General Public License and GNU Lesser
16  * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17  * <http://www.gnu.org/licenses/>.
18  *
19  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20  */
21 
22 #ifndef NDN_DELEGATION_HPP
23 #define NDN_DELEGATION_HPP
24 
25 #include "ndn-cxx/name.hpp"
26 
27 namespace ndn {
28 
33 {
34 private: // non-member operators
35  // NOTE: the following "hidden friend" operators are available via
36  // argument-dependent lookup only and must be defined inline.
37 
38  friend bool
39  operator==(const Delegation& lhs, const Delegation& rhs)
40  {
41  return !(lhs != rhs);
42  }
43 
44  friend bool
45  operator!=(const Delegation& lhs, const Delegation& rhs)
46  {
47  return lhs.preference != rhs.preference ||
48  lhs.name != rhs.name;
49  }
50 
51  friend bool
52  operator<(const Delegation& lhs, const Delegation& rhs)
53  {
54  return std::tie(lhs.preference, lhs.name) <
55  std::tie(rhs.preference, rhs.name);
56  }
57 
58  friend bool
59  operator<=(const Delegation& lhs, const Delegation& rhs)
60  {
61  return !(rhs < lhs);
62  }
63 
64  friend bool
65  operator>(const Delegation& lhs, const Delegation& rhs)
66  {
67  return rhs < lhs;
68  }
69 
70  friend bool
71  operator>=(const Delegation& lhs, const Delegation& rhs)
72  {
73  return !(lhs < rhs);
74  }
75 
76  friend std::ostream&
77  operator<<(std::ostream& os, const Delegation& d)
78  {
79  return os << d.name << '(' << d.preference << ')';
80  }
81 
82 public:
83  uint64_t preference;
85 };
86 
87 } // namespace ndn
88 
89 #endif // NDN_DELEGATION_HPP
Definition: data.cpp:26
friend bool operator>=(const Delegation &lhs, const Delegation &rhs)
Definition: delegation.hpp:71
uint64_t preference
Definition: delegation.hpp:83
friend bool operator<=(const Delegation &lhs, const Delegation &rhs)
Definition: delegation.hpp:59
friend std::ostream & operator<<(std::ostream &os, const Delegation &d)
Definition: delegation.hpp:77
friend bool operator==(const Delegation &lhs, const Delegation &rhs)
Definition: delegation.hpp:39
friend bool operator>(const Delegation &lhs, const Delegation &rhs)
Definition: delegation.hpp:65
friend bool operator!=(const Delegation &lhs, const Delegation &rhs)
Definition: delegation.hpp:45
Represents an absolute name.
Definition: name.hpp:44
friend bool operator<(const Delegation &lhs, const Delegation &rhs)
Definition: delegation.hpp:52
Represents a Delegation.
Definition: delegation.hpp:32