Seastar
High performance C++ framework for concurrent servers
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
function_input_iterator.hh
1/*
2 * This file is open source software, licensed to you under the terms
3 * of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4 * distributed with this work for additional information regarding copyright
5 * ownership. You may not use this file except in compliance with the License.
6 *
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing,
12 * software distributed under the License is distributed on an
13 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 * KIND, either express or implied. See the License for the
15 * specific language governing permissions and limitations
16 * under the License.
17 */
18/*
19 * Copyright (C) 2014 Cloudius Systems, Ltd.
20 */
21
22#pragma once
23
24namespace seastar {
25
26template <typename Function, typename State>
28 Function _func;
29 State _state;
30public:
31 function_input_iterator(Function func, State state)
32 : _func(func), _state(state) {
33 }
36 function_input_iterator& operator=(const function_input_iterator&) = default;
38 auto operator*() const {
39 return _func();
40 }
41 function_input_iterator& operator++() {
42 ++_state;
43 return *this;
44 }
45 function_input_iterator operator++(int) {
46 function_input_iterator ret{*this};
47 ++_state;
48 return ret;
49 }
50 bool operator==(const function_input_iterator& x) const {
51 return _state == x._state;
52 }
53 bool operator!=(const function_input_iterator& x) const {
54 return !operator==(x);
55 }
56};
57
58template <typename Function, typename State>
59inline
61make_function_input_iterator(Function func, State state) {
63}
64
65template <typename Function, typename State>
66inline
67function_input_iterator<Function, State>
68make_function_input_iterator(Function&& func) {
69 return function_input_iterator<Function, State>(func, State{});
70}
71
72}
Seastar API namespace.
Definition: abort_on_ebadf.hh:26
Definition: function_input_iterator.hh:27