JSON Voorhees
Killer JSON for C++
Main Page
Related Pages
Modules
Classes
Files
Examples
File List
File Members
functional.hpp
Go to the documentation of this file.
1
/** \file jsonv/functional.hpp
2
* A collection of function objects a la `<functional>`.
3
*
4
* Copyright (c) 2015 by Travis Gockel. All rights reserved.
5
*
6
* This program is free software: you can redistribute it and/or modify it under the terms of the Apache License
7
* as published by the Apache Software Foundation, either version 2 of the License, or (at your option) any later
8
* version.
9
*
10
* \author Travis Gockel (travis@gockelhut.com)
11
**/
12
#ifndef __JSONV_FUNCTIONAL_HPP_INCLUDED__
13
#define __JSONV_FUNCTIONAL_HPP_INCLUDED__
14
15
#include <
jsonv/config.hpp
>
16
17
#include <functional>
18
19
namespace
jsonv
20
{
21
22
class
value;
23
24
/** \addtogroup Algorithm
25
* \{
26
**/
27
28
/** Compares a \c value to another using the standard-issue \c value::compare function. **/
29
struct
value_compare
30
{
31
using
first_argument_type
=
value
;
32
using
second_argument_type
=
value
;
33
using
result_type = int;
34
35
int
operator()(
const
value
& a,
const
value
& b)
const
;
36
};
37
38
/** Compares two values, ignoring the case for any \c value with \c kind::string. This does \e not ignore case for the
39
* keys of objects.
40
**/
41
struct
value_compare_icase
42
{
43
using
first_argument_type
=
value
;
44
using
second_argument_type
=
value
;
45
using
result_type = int;
46
47
int
operator()(
const
value
& a,
const
value
& b)
const
;
48
};
49
50
template
<
typename
FCompare,
typename
FResult>
51
struct
basic_value_binary_predicate
:
52
private
FCompare,
53
private
FResult
54
{
55
using
first_argument_type
=
value
;
56
using
second_argument_type
=
value
;
57
using
result_type = bool;
58
59
bool
operator()(
const
value
& a,
const
value
& b)
const
60
{
61
return
FResult::operator()(FCompare::operator()(a, b), 0);
62
}
63
};
64
65
using
value_equal_to
=
basic_value_binary_predicate<value_compare, std::equal_to<int>
>;
66
using
value_equal_to_icase
=
basic_value_binary_predicate<value_compare_icase, std::equal_to<int>
>;
67
using
value_not_equal_to
=
basic_value_binary_predicate<value_compare, std::not_equal_to<int>
>;
68
using
value_not_equal_to_icase
=
basic_value_binary_predicate<value_compare_icase, std::not_equal_to<int>
>;
69
using
value_less
=
basic_value_binary_predicate<value_compare, std::less<int>
>;
70
using
value_less_icase
=
basic_value_binary_predicate<value_compare_icase, std::less<int>
>;
71
using
value_less_equal
=
basic_value_binary_predicate<value_compare, std::less_equal<int>
>;
72
using
value_less_equal_icase
=
basic_value_binary_predicate<value_compare_icase, std::less_equal<int>
>;
73
using
value_greater
=
basic_value_binary_predicate<value_compare, std::greater<int>
>;
74
using
value_greater_icase
=
basic_value_binary_predicate<value_compare_icase, std::greater<int>
>;
75
using
value_greater_equal
=
basic_value_binary_predicate<value_compare, std::greater_equal<int>
>;
76
using
value_greater_equal_icase
=
basic_value_binary_predicate<value_compare_icase, std::greater_equal<int>
>;
77
78
/** \} **/
79
80
}
81
82
#endif
/*__JSONV_FUNCTIONAL_HPP_INCLUDED__*/
jsonv::value_compare
Compares a value to another using the standard-issue value::compare function.
Definition:
functional.hpp:29
jsonv::value_compare_icase
Compares two values, ignoring the case for any value with kind::string.
Definition:
functional.hpp:41
config.hpp
Copyright (c) 2014-2019 by Travis Gockel.
jsonv
Definition:
algorithm.hpp:23
jsonv::basic_value_binary_predicate
Definition:
functional.hpp:51
jsonv::value
Represents a single JSON value, which can be any one of a potential kind, each behaving slightly diff...
Definition:
value.hpp:131
jsonv
functional.hpp
Generated by
1.8.11