ITK/Proposals:Concept Checking

From KitwarePublic
Jump to navigationJump to search

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 T to have operator <.
6 EqualityComparable Concept requiring T to have operators == and !=.
7 Comparable Concept requiring T to have operators <, >, <=, >=, ==, !=.
8 AdditiveOperators Concept requiring T to have operators +, -, +=, -=.
9 MultiplicativeOperators Concept requiring T to have operators *, /, *=, /=.
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.


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)

Integration into Filters

Schedule

Please follow the link below for a detailed list of filters and their associated concepts.

List of Filters



ITK: [Welcome | Site Map]