RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
concepts.hh
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the C++-library RFFGen. */
4 /* Copyright 2015 Lars Lubkoll */
5 /* */
6 /* RFFGen is free software: you can redistribute it and/or modify */
7 /* it under the terms of the GNU General Public License as published by */
8 /* the Free Software Foundation, either version 3 of the License, or */
9 /* (at your option) any later version. */
10 /* */
11 /* RFFGen is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public License */
17 /* along with RFFGen. If not, see <http://www.gnu.org/licenses/>. */
18 /* */
19 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
20 
21 #ifndef RFFGEN_CONCEPTS_HH
22 #define RFFGEN_CONCEPTS_HH
23 
24 #include "Util/base.hh"
25 
30 namespace RFFGen
31 {
32  namespace Concepts
33  {
37  struct unspecified;
46  struct CopyConcept
47  {
49  CopyConcept(const CopyConcept&);
52  };
53 
60  {
62  unspecified operator*=(double);
64  unspecified operator*=(int);
65 
66  };
77 
78 
84  {
86  unspecified operator+=(SummationConcept);
87  };
93 
94 
102  {
103  struct Arg1; struct Arg2;
105  unspecified operator*=(Arg2);
107  unspecified rightmultiplyany(Arg2);
108  };
109 
110 
115  unspecified operator*(MultiplicationConcept::Arg1,MultiplicationConcept::Arg2);
116 
117 
126  {};
127 
128 
136  {
138  unspecified operator[](int);
140  unspecified operator()(int,int);
141  };
142 
143 
151  {
153  unspecified operator[](int);
155  unspecified operator()(int);
156  };
157 
158 
167  {};
168 
169 
175  {
177  unspecified d0() const;
178  };
179  }
180 }
181 
182 #endif // RFFGEN_CONCEPTS_HH
Requires that multiplication with double and int can be performed either by in-place multiplication o...
Definition: concepts.hh:59
unspecified operator*=(Arg2)
In-place multiplication. Return type is not checked to support lazy evaluation.
auto operator*(const F &f, const G &g)
overload of "*"-operator for the generation of functions.
Definition: generate.hh:151
Requires that summation can be performed either by in-place summation or free summation.
Definition: concepts.hh:83
Requirements for matrices.
Definition: concepts.hh:135
Base class for functions satisfying FunctionConcept. Required for enabling the operators in generate...
Definition: base.hh:27
Requirements on input types.
Definition: concepts.hh:125
unspecified operator+=(SummationConcept)
In-place summation. Return type is not checked to support lazy evaluation.
CopyConcept & operator=(const CopyConcept &)
Copy-assignable.
Requires copy-constructibility and copy-assignability.
Definition: concepts.hh:46
Minimal requirements for functions.
Definition: concepts.hh:174
CopyConcept(const CopyConcept &)
Copy-constructible.
unspecified operator()(int, int)
Access to entry.
unspecified operator[](int)
Access to entry.
unspecified operator()(int)
Access to entry.
auto operator+(const F &f, const G &g)
overload of "+"-operator for the generation of functions.
Definition: generate.hh:138
Requirements for symmetric matrices.
Definition: concepts.hh:165
unspecified rightmultiplyany(Arg2)
Multiplication via rightmultiplyany(Arg2). Return type is not checked to support lazy evaluation...
unspecified operator[](int)
Access to row, providing itself the same operator[](int).
Requires that multiplication can be performed.
Definition: concepts.hh:101
unspecified operator*=(double)
In-place multiplication. Return type is not checked to support lazy evaluation.
Requirements for vectors.
Definition: concepts.hh:150
unspecified d0() const
Access to function value.