ITK/Proposals:Concept Checking: Difference between revisions
(breaking down MultiplicativeOperators concept and adding IsInteger, IsNonInteger, IsFloatingPoint, and IsFixedPoint) |
|||
Line 29: | Line 29: | ||
| 8 || AdditiveOperators || Concept requiring T1 to have operators +, -, +=, -= in the form T3 = T1 op T2. | | 8 || AdditiveOperators || Concept requiring T1 to have operators +, -, +=, -= in the form T3 = T1 op T2. | ||
|- | |- | ||
| 9 || | | 9 || MultiplyOperator || Concept requiring T1 to have operator * in the form T3 = T1 op T2. | ||
|- | |- | ||
| 10 || Signed || Concept requiring T to be signed. | | 10 || Signed || Concept requiring T to be signed. | ||
Line 54: | Line 54: | ||
|- | |- | ||
| 21 || SameDimensionOrMinusOne || Concept requiring D1 and D2 to be the same dimension or D2-1 = D2. | | 21 || SameDimensionOrMinusOne || Concept requiring D1 and D2 to be the same dimension or D2-1 = D2. | ||
|- | |||
| 22 || MultiplyAndAssignOperator || Concept requiring T1 to have operator *= in the form T2 op= T1. | |||
|- | |||
| 23 || DivisionOperators || Concept requiring T1 to have operators / and /= in the form T3 = T1 op T2. | |||
|- | |||
| 24 || IsInteger || Concept requiring T to be inteter. | |||
|- | |||
| 25 || IsNonInteger || Concept requiring T to be non-inteter. | |||
|- | |||
| 26 || IsFloatingPoint || Concept requiring T to be floating point. | |||
|- | |||
| 26 || IsFixedPoint || Concept requiring T to be fixed point. | |||
|} | |} | ||
Revision as of 14:39, 31 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 | MultiplyOperator | Concept requiring T1 to have operator * 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 | Concept requiring T1 to have operators &, I, ^, &=, I=, ^= 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. |
22 | MultiplyAndAssignOperator | Concept requiring T1 to have operator *= in the form T2 op= T1. |
23 | DivisionOperators | Concept requiring T1 to have operators / and /= in the form T3 = T1 op T2. |
24 | IsInteger | Concept requiring T to be inteter. |
25 | IsNonInteger | Concept requiring T to be non-inteter. |
26 | IsFloatingPoint | Concept requiring T to be floating point. |
26 | IsFixedPoint | Concept requiring T to be fixed point. |
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.