blob: a0db08622e3f2c2759baf4a8e99802d37bfbc894 [file] [log] [blame]
Vince Lehman0a7da612014-10-29 14:39:29 -05001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Davide Pesaventod90338d2021-01-07 17:50:05 -05002/*
Davide Pesaventoc1d0e8e2022-06-15 14:26:02 -04003 * Copyright (c) 2014-2022, The University of Memphis,
Nick Gordonf8b5bcd2016-08-11 15:06:50 -05004 * Regents of the University of California
Vince Lehman0a7da612014-10-29 14:39:29 -05005 *
6 * This file is part of NLSR (Named-data Link State Routing).
7 * See AUTHORS.md for complete list of NLSR authors and contributors.
8 *
9 * NLSR is free software: you can redistribute it and/or modify it under the terms
10 * of the GNU General Public License as published by the Free Software Foundation,
11 * either version 3 of the License, or (at your option) any later version.
12 *
13 * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
14 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along with
18 * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
Nick Gordond0a7df32017-05-30 16:44:34 -050019 */
20
Vince Lehman0a7da612014-10-29 14:39:29 -050021#ifndef NLSR_COMMON_HPP
22#define NLSR_COMMON_HPP
23
Davide Pesaventod90338d2021-01-07 17:50:05 -050024#include <cstddef>
25#include <cstdint>
26#include <functional>
27#include <iterator>
28#include <memory>
Davide Pesaventoc1d0e8e2022-06-15 14:26:02 -040029#include <type_traits>
Davide Pesaventod90338d2021-01-07 17:50:05 -050030#include <utility>
31
Nick Gordon8f23b5d2017-08-31 17:53:07 -050032#include <ndn-cxx/name.hpp>
Davide Pesaventod90338d2021-01-07 17:50:05 -050033#include <ndn-cxx/util/exception.hpp>
34#include <ndn-cxx/util/time.hpp>
Vince Lehman0a7da612014-10-29 14:39:29 -050035
36namespace nlsr {
37
Davide Pesaventod90338d2021-01-07 17:50:05 -050038using namespace ndn::time_literals;
Vince Lehman0a7da612014-10-29 14:39:29 -050039
Davide Pesaventoc1d0e8e2022-06-15 14:26:02 -040040constexpr ndn::time::seconds TIME_ALLOWED_FOR_CANONIZATION = 4_s;
Nick Gordon9461afb2017-04-25 15:54:50 -050041
Nick Gordon22b5c952017-08-10 17:48:15 -050042template<typename T, typename = void>
43struct is_iterator
44{
Davide Pesaventod90338d2021-01-07 17:50:05 -050045 static constexpr bool value = false;
Nick Gordon22b5c952017-08-10 17:48:15 -050046};
47
48/*! Use C++11 iterator_traits to check if some type is an iterator
49 */
50template<typename T>
Davide Pesaventoc1d0e8e2022-06-15 14:26:02 -040051struct is_iterator<T, std::enable_if_t<!std::is_same_v<
52 typename std::iterator_traits<T>::value_type, void>>>
Nick Gordon22b5c952017-08-10 17:48:15 -050053{
Davide Pesaventod90338d2021-01-07 17:50:05 -050054 static constexpr bool value = true;
Nick Gordon22b5c952017-08-10 17:48:15 -050055};
56
Nick Gordon9461afb2017-04-25 15:54:50 -050057} // namespace nlsr
Vince Lehman0a7da612014-10-29 14:39:29 -050058
59#endif // NLSR_COMMON_HPP