blob: 8903f2243164b1ff2763a380f854cf9a3dd74394 [file] [log] [blame]
Jeff Thompson25b4e612013-10-10 16:03:24 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
Jeff Thompson47eecfc2013-07-07 22:56:46 -07002/**
Jeff Thompson7687dc02013-09-13 11:54:07 -07003 * Copyright (C) 2013 Regents of the University of California.
4 * @author: Jeff Thompson <jefft0@remap.ucla.edu>
Jeff Thompson47eecfc2013-07-07 22:56:46 -07005 * See COPYING for copyright and distribution information.
Jeff Thompson571f3522013-07-07 22:39:31 -07006 */
7
8#ifndef NDN_COMMON_HPP
9#define NDN_COMMON_HPP
10
Alexander Afanasyev09c613f2014-01-29 00:23:58 -080011#include "ndn-cpp-config.h"
Alexander Afanasyevd409d592014-01-28 18:36:38 -080012#include <stdint.h>
13// TODO: Is stddef.h portable?
14#include <stddef.h>
15
Jeff Thompson51dd5fd2013-07-10 19:27:18 -070016#include <vector>
Jeff Thompson571f3522013-07-07 22:39:31 -070017
Alexander Afanasyev0541cf42014-01-02 19:10:37 -080018#if NDN_CPP_HAVE_CXX11
Alexander Afanasyev472fa022014-01-07 13:30:49 -080019
20#if (__cplusplus < 201103L)
Yingdi Yu61ec2722014-01-20 14:22:32 -080021#error "NDN-CPP-DEV library is configured and compiled in C++11 mode, but the current compiler is not C++11 enabled"
Alexander Afanasyev472fa022014-01-07 13:30:49 -080022#endif
23
Jeff Thompson571f3522013-07-07 22:39:31 -070024#include <memory>
25namespace ndn { namespace ptr_lib = std; }
Alexander Afanasyev0541cf42014-01-02 19:10:37 -080026
27// #if NDN_CPP_HAVE_STD_FUNCTION
28#include <functional>
29namespace ndn { namespace func_lib = std; }
30
Alexander Afanasyevd409d592014-01-28 18:36:38 -080031#else
Alexander Afanasyev0541cf42014-01-02 19:10:37 -080032
33// #if NDN_CPP_HAVE_BOOST_SHARED_PTR
Jeff Thompson571f3522013-07-07 22:39:31 -070034#include <boost/shared_ptr.hpp>
Alexander Afanasyevb790d952014-01-24 12:07:53 -080035#include <boost/enable_shared_from_this.hpp>
Jeff Thompson571f3522013-07-07 22:39:31 -070036#include <boost/make_shared.hpp>
37namespace ndn { namespace ptr_lib = boost; }
Alexander Afanasyev0541cf42014-01-02 19:10:37 -080038
39// #if NDN_CPP_HAVE_BOOST_FUNCTION
40#include <boost/function.hpp>
41#include <boost/bind.hpp>
42namespace ndn { namespace func_lib = boost; }
43
Jeff Thompsona28eed82013-08-22 16:21:10 -070044#endif
45
Jeff Thompson51dd5fd2013-07-10 19:27:18 -070046namespace ndn {
Jeff Thompson9a8e82f2013-10-17 14:13:43 -070047
48/**
49 * A time interval represented as the number of milliseconds.
50 */
Alexander Afanasyevee940312013-12-24 19:43:15 -080051typedef int64_t Milliseconds;
Jeff Thompson04bfd942013-09-12 15:55:58 -070052
Jeff Thompson9a8e82f2013-10-17 14:13:43 -070053/**
54 * The calendar time represented as the number of milliseconds since 1/1/1970.
55 */
Alexander Afanasyevee940312013-12-24 19:43:15 -080056typedef int64_t MillisecondsSince1970;
Jeff Thompson9a8e82f2013-10-17 14:13:43 -070057
Jeff Thompsona8d7b062013-08-08 15:56:35 -070058/**
59 * Return the hex representation of the bytes in array.
60 * @param array The array of bytes.
61 * @return Hex string.
62 */
Jeff Thompson0050abe2013-09-17 12:50:25 -070063std::string
Jeff Thompson10ad12a2013-09-24 16:19:11 -070064toHex(const std::vector<uint8_t>& array);
Jeff Thompsona8d7b062013-08-08 15:56:35 -070065
Yingdi Yu31b4af22014-01-14 14:13:00 -080066MillisecondsSince1970
67getNow();
68
Jeff Thompson51dd5fd2013-07-10 19:27:18 -070069}
70
Jeff Thompson571f3522013-07-07 22:39:31 -070071#endif