ITK/Proposals:Concept Checking: Difference between revisions
Line 21: | Line 21: | ||
| 4 || Assignable || Concept requiring T to have operator =. | | 4 || Assignable || Concept requiring T to have operator =. | ||
|- | |- | ||
| 5 || LessThanComparable || Concept requiring | | 5 || LessThanComparable || Concept requiring T1 to have operators < and <= with a right-hand operator of type T2. | ||
|- | |- | ||
| 6 || EqualityComparable || Concept requiring | | 6 || EqualityComparable || Concept requiring T1 to have operators == and != with a right-hand operator of type T2. | ||
|- | |- | ||
| 7 || Comparable || Concept requiring | | 7 || Comparable || Concept requiring T1 to have operators <, >, <=, >=, ==, != with a right-hand operator of type T2. | ||
|- | |- | ||
| 8 || AdditiveOperators || Concept requiring | | 8 || AdditiveOperators || Concept requiring T1 to have operators +, -, +=, -= in the form T3 = T1 op T2. | ||
|- | |- | ||
| 9 || MultiplicativeOperators || Concept requiring | | 9 || MultiplicativeOperators || Concept requiring T1 to have operators *, /, *=, /= in the form T3 = T1 op T2. | ||
|- | |- | ||
| 10 || Signed || Concept requiring T to be signed. | | 10 || Signed || Concept requiring T to be signed. | ||
Line 36: | Line 36: | ||
|- | |- | ||
| 12 || SameDimension || Concept requiring D1 and D2 to be the same dimension. | | 12 || SameDimension || Concept requiring D1 and D2 to be the same dimension. | ||
|- | |||
| 13 || GreaterThanComparable || Concept requiring T1 to have operators > and >= with a right-hand operator of type T2. | |||
|- | |||
| 14 || LogicalOperators || Concept requiring T1 to have operators &, |, ^, &=, |=, ^= in the form T3 = T1 op T2. | |||
|- | |||
| 15 || NotOperator || Concept requiring T to have operator !. | |||
|- | |||
| 16 || IncrementDecrementOperators || Concept requiring T to have operators ++ and --. | |||
|- | |||
| 17 || OStreamWritable || Concept requiring T to be writable to an ostream. | |||
|- | |||
| 18 || HasNumericTraits || Concept requiring T to have NumericTraits. | |||
|- | |||
| 19 || HasPixelTraits || Concept requiring T to have PixelTraits. | |||
|- | |||
| 20 || HasJoinTraits || Concept requiring T to have JoinTraits. | |||
|- | |||
| 21 || SameDimensionOrMinusOne || Concept requiring D1 and D2 to be the same dimension or D2-1 = D2. | |||
|} | |} | ||
== Proposed concept additions == | == Proposed concept additions == |
Revision as of 16:12, 24 March 2006
Introduction
Macro Implementation
List of Concepts
See Insight/Code/Common/itkConceptChecking.h.
Index | Concept | Description |
---|---|---|
1 | DefaultConstructible | Concept requiring T to have a default constructor. |
2 | CopyConstructible | Concept requiring T to have a copy constructor. |
3 | Convertible | Concept requiring T1 to be convertible to T2. |
4 | Assignable | Concept requiring T to have operator =. |
5 | LessThanComparable | Concept requiring T1 to have operators < and <= with a right-hand operator of type T2. |
6 | EqualityComparable | Concept requiring T1 to have operators == and != with a right-hand operator of type T2. |
7 | Comparable | Concept requiring T1 to have operators <, >, <=, >=, ==, != with a right-hand operator of type T2. |
8 | AdditiveOperators | Concept requiring T1 to have operators +, -, +=, -= in the form T3 = T1 op T2. |
9 | MultiplicativeOperators | Concept requiring T1 to have operators *, /, *=, /= in the form T3 = T1 op T2. |
10 | Signed | Concept requiring T to be signed. |
11 | SameType | Concept requiring T1 and T2 to be the same type. |
12 | SameDimension | Concept requiring D1 and D2 to be the same dimension. |
13 | GreaterThanComparable | Concept requiring T1 to have operators > and >= with a right-hand operator of type T2. |
14 | LogicalOperators | , ^, &=, |=, ^= in the form T3 = T1 op T2. |
15 | NotOperator | Concept requiring T to have operator !. |
16 | IncrementDecrementOperators | Concept requiring T to have operators ++ and --. |
17 | OStreamWritable | Concept requiring T to be writable to an ostream. |
18 | HasNumericTraits | Concept requiring T to have NumericTraits. |
19 | HasPixelTraits | Concept requiring T to have PixelTraits. |
20 | HasJoinTraits | Concept requiring T to have JoinTraits. |
21 | SameDimensionOrMinusOne | Concept requiring D1 and D2 to be the same dimension or D2-1 = D2. |
Proposed concept additions
Additional concepts for requiring integer or noninteger datatypes should be added to the toolkit. NumericTraits defines static boolean constants
- is_bounded
- is_exact
- is_iec559 (???)
- is_integer
- is_modulo
- is_signed
- is_specialized
- tinyness_before
These traits can be used to define concepts in a manner similar to the Signed concept. We should consider separating the concepts of integer, non-integer, floating point so that we can expand our native datatypes to include a fixed point representation.
The concepts below are poorly named. We should not have a concept called Integer since a user could confuse the name of the concept with a datatype. Unfortunately, none of the current concepts have the word concept in their name. We could follow NumericTraits, and make the new concepts called IsInteger.
Index | Concept | Description |
---|---|---|
13 | Integer | Concept requiring T to be an integer. |
14 | Noninteger | Concept requiring T to be noninteger (floating point or fixed point). |
15 | FloatingPoint | Concept requiring T to be floating point (not integer and not fixed point) |
16 | FixedPoint | Concept requiring T to be an ITK fixed point representation (not integer and not floating point) |
Integration into Filters
Schedule
Please follow the link below for a detailed list of filters and their associated concepts.