blob: cdd6e473b66458a86b51441dc909483bc5203c9e [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001//-----------------------------------------------------------------------------
2// boost blank.hpp header file
3// See http://www.boost.org for updates, documentation, and revision history.
4//-----------------------------------------------------------------------------
5//
6// Copyright (c) 2003
7// Eric Friedman
8//
9// Distributed under the Boost Software License, Version 1.0. (See
10// accompanying file LICENSE_1_0.txt or copy at
11// http://www.boost.org/LICENSE_1_0.txt)
12
Jeff Thompson3d613fd2013-10-15 15:39:04 -070013#ifndef NDNBOOST_BLANK_HPP
14#define NDNBOOST_BLANK_HPP
Jeff Thompsona28eed82013-08-22 16:21:10 -070015
16#include "ndnboost/blank_fwd.hpp"
17
Jeff Thompson3d613fd2013-10-15 15:39:04 -070018#if !defined(NDNBOOST_NO_IOSTREAM)
Jeff Thompsona28eed82013-08-22 16:21:10 -070019#include <iosfwd> // for std::basic_ostream forward declare
20#include "ndnboost/detail/templated_streams.hpp"
Jeff Thompson3d613fd2013-10-15 15:39:04 -070021#endif // NDNBOOST_NO_IOSTREAM
Jeff Thompsona28eed82013-08-22 16:21:10 -070022
23#include "ndnboost/mpl/bool.hpp"
24#include "ndnboost/type_traits/is_empty.hpp"
25#include "ndnboost/type_traits/is_pod.hpp"
26#include "ndnboost/type_traits/is_stateless.hpp"
27
28namespace ndnboost {
29
30struct blank
31{
32};
33
34// type traits specializations
35//
36
37template <>
38struct is_pod< blank >
39 : mpl::true_
40{
41};
42
43template <>
44struct is_empty< blank >
45 : mpl::true_
46{
47};
48
49template <>
50struct is_stateless< blank >
51 : mpl::true_
52{
53};
54
55// relational operators
56//
57
58inline bool operator==(const blank&, const blank&)
59{
60 return true;
61}
62
63inline bool operator<=(const blank&, const blank&)
64{
65 return true;
66}
67
68inline bool operator>=(const blank&, const blank&)
69{
70 return true;
71}
72
73inline bool operator!=(const blank&, const blank&)
74{
75 return false;
76}
77
78inline bool operator<(const blank&, const blank&)
79{
80 return false;
81}
82
83inline bool operator>(const blank&, const blank&)
84{
85 return false;
86}
87
88// streaming support
89//
Jeff Thompson3d613fd2013-10-15 15:39:04 -070090#if !defined(NDNBOOST_NO_IOSTREAM)
Jeff Thompsona28eed82013-08-22 16:21:10 -070091
Jeff Thompson3d613fd2013-10-15 15:39:04 -070092NDNBOOST_TEMPLATED_STREAM_TEMPLATE(E,T)
93inline NDNBOOST_TEMPLATED_STREAM(ostream, E,T)& operator<<(
94 NDNBOOST_TEMPLATED_STREAM(ostream, E,T)& out
Jeff Thompsona28eed82013-08-22 16:21:10 -070095 , const blank&
96 )
97{
98 // (output nothing)
99 return out;
100}
101
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700102#endif // NDNBOOST_NO_IOSTREAM
Jeff Thompsona28eed82013-08-22 16:21:10 -0700103
104} // namespace ndnboost
105
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700106#endif // NDNBOOST_BLANK_HPP