// Filename: multiTransitionHelpers.h // Created by: drose (15Feb99) // //////////////////////////////////////////////////////////////////// #ifndef MULTITRANSITIONHELPERS_H #define MULTITRANSITIONHELPERS_H #include //////////////////////////////////////////////////////////////////// // Function: dmap_compose // Description: Accepts two DirectionMaps, and builds a new // list (another DirectionMap) which represents the // memberwise composition of the two input maps. //////////////////////////////////////////////////////////////////// template OutputIterator dmap_compose(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); //////////////////////////////////////////////////////////////////// // Function: dmap_invert_compose // Description: Accepts two DirectionMaps, and builds a new // list (another DirectionMap) which represents the // memberwise result inverting and composing. //////////////////////////////////////////////////////////////////// template OutputIterator dmap_invert_compose(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); //////////////////////////////////////////////////////////////////// // Function: dmap_invert // Description: Accepts a DirectionMap, and builds a new list // which represents the memberwise inversion of the // input. Guarantees that the new list will have // exactly the same length as the input list. //////////////////////////////////////////////////////////////////// template OutputIterator dmap_invert(InputIterator first, InputIterator last, OutputIterator result); //////////////////////////////////////////////////////////////////// // Function: dmap_equiv // Description: Accepts a pair of DirectionMaps, and returns // true if they are equivalent, false otherwise. Two // DirectionMaps are defined to be equivalent if // all nonidentity members present in one set are // present and equivalent in the other set, //////////////////////////////////////////////////////////////////// template bool dmap_equiv(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); //////////////////////////////////////////////////////////////////// // Function: dmap_compare // Description: Accepts a pair of DirectionMaps, and returns // < 0 if the first one sorts before the second one, > 0 // if the first one sorts after, 0 if they are // equivalent. //////////////////////////////////////////////////////////////////// template int dmap_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); //////////////////////////////////////////////////////////////////// // Function: dmap_is_identity // Description: Accepts a DirectionMap, and returns true if all // elements in the map correspond to the identity // transition, false otherwise. //////////////////////////////////////////////////////////////////// template bool dmap_is_identity(InputIterator first, InputIterator last); //////////////////////////////////////////////////////////////////// // Function: bmap_equiv // Description: Accepts a pair of BoolMaps, and returns true if they // are equivalent, false otherwise. Two BoolMaps are // defined to be equivalent if all 'on' members present // in one set are present and equivalent in the other // set, //////////////////////////////////////////////////////////////////// template bool bmap_equiv(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); //////////////////////////////////////////////////////////////////// // Function: bmap_compare // Description: Accepts a pair of BoolMaps, and returns < 0 if the // first one sorts first, > 0 if the second one sorts // first, 0 if they are equivalent. //////////////////////////////////////////////////////////////////// template int bmap_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); //////////////////////////////////////////////////////////////////// // Function: bmap_apply // Description: Accepts a BoolMap and a DirectionMap, and builds a // new list (another BoolMap) which represents the // memberwise application of the two input maps. //////////////////////////////////////////////////////////////////// template OutputIterator bmap_apply(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, bool complete_transition, TransitionDirection want_dirs, OutputIterator result); #include "multiTransitionHelpers.I" #endif