Visual Computing Library
Loading...
Searching...
No Matches
pair.h
1/*****************************************************************************
2 * VCLib *
3 * Visual Computing Library *
4 * *
5 * Copyright(C) 2021-2025 *
6 * Visual Computing Lab *
7 * ISTI - Italian National Research Council *
8 * *
9 * All rights reserved. *
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the Mozilla Public License Version 2.0 as published *
13 * by the Mozilla Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 * This program is distributed in the hope that it will be useful, *
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
19 * Mozilla Public License Version 2.0 *
20 * (https://www.mozilla.org/en-US/MPL/2.0/) for more details. *
21 ****************************************************************************/
22
23#ifndef VCL_MISC_PAIR_H
24#define VCL_MISC_PAIR_H
25
26#include <vclib/types.h>
27
28namespace vcl {
29
30template<typename T1, typename T2>
32{
33public:
34 RefPair(T1& f, T2& s) : first(f), second(s) {}
35
36 T1& first;
37 T2& second;
38};
39
40template<typename T1, typename T2>
42{
43public:
44 FirstRefPair(T1& f, const T2& s) : first(f), second(s) {}
45
46 T1& first;
47 T2 second;
48};
49
50template<typename T1, typename T2>
52{
53public:
54 SecondRefPair(const T1& f, T2& s) : first(f), second(s) {}
55
56 T1 first;
57 T2& second;
58};
59
60template<typename T1, typename T2>
61class KeyRefValueRefPair : public RefPair<T1, T2>
62{
63public:
64 KeyRefValueRefPair(T1& f, T2& s) : RefPair<T1, T2>(f, s) {}
65
66 T1& key = RefPair<T1, T2>::first; // alias
67 T2& value = RefPair<T1, T2>::second; // alias
68};
69
70template<typename T1, typename T2>
71class KeyValueRefPair : public SecondRefPair<T1, T2>
72{
73public:
74 KeyValueRefPair(const T1& f, T2& s) : SecondRefPair<T1, T2>(f, s) {}
75
76 T1& key = SecondRefPair<T1, T2>::first; // alias
77 T2& value = SecondRefPair<T1, T2>::second; // alias
78};
79
80} // namespace vcl
81
82#endif // VCL_MISC_PAIR_H
Definition pair.h:42
Definition pair.h:62
Definition pair.h:72
Definition pair.h:32
Definition pair.h:52
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43