00001 /* 00002 * Copyright (c) 2000, University of Amsterdam, The Netherlands. 00003 * All rights reserved. 00004 * 00005 * Author(s): 00006 * Edo Poll (poll@wins.uva.nl) 00007 * Dennis Koelma (koelma@wins.uva.nl) 00008 */ 00009 00010 #ifndef HxCategories_h 00011 #define HxCategories_h 00012 00013 #include "HxString.h" 00014 #include "HxClassName.h" 00015 00016 /* 00017 Definition of the various kind of tag types. 00018 */ 00019 00020 // PhaseCategory 00021 00023 struct HxTag1Phase { 00025 HxString toString() { return "1 phase"; } 00026 }; 00027 00029 struct HxTag2Phase { 00031 HxString toString() { return "2 phase"; } 00032 }; 00033 00035 struct HxTagNPhase { 00037 HxString toString() { return "N phase"; } 00038 }; 00039 00040 00041 // TransVarianceCategory 00042 00044 struct HxTagTransVar { 00046 HxString toString() { return "Translation variant"; } 00047 }; 00048 00050 struct HxTagTransInVar { 00052 HxString toString() { return "Translation invariant"; } 00053 }; 00054 00055 00056 // DirectionCategory 00057 00059 struct HxTagPixOpIn { 00061 HxString toString() { return "In"; } 00062 }; 00063 00065 struct HxTagPixOpOut { 00067 HxString toString() { return "Out"; } 00068 }; 00069 00070 00071 // IteratorCategory 00072 00074 struct HxTagCnum { 00076 HxString toString() { return "Coordinate enumerated"; } 00077 }; 00078 00080 struct HxTagLoop { 00082 HxString toString() { return "Loop"; } 00083 }; 00084 00085 00086 // Miscellanious predicates 00087 00088 template<class T> 00089 class HxPixOpMakeName { 00090 public: 00091 HxPixOpMakeName(HxString name); 00092 operator HxString() { return _name; } 00093 private: 00094 HxString _name; 00095 }; 00096 00097 template<class T> 00098 inline 00099 HxPixOpMakeName<T>::HxPixOpMakeName(HxString name) 00100 : _name(name) 00101 { 00102 _name += "<"; 00103 _name += HxClassName<T>(); 00104 _name += ">"; 00105 } 00106 00107 #endif