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 */ 00008 00009 #ifndef HxPixOpCategory_h 00010 #define HxPixOpCategory_h 00011 00012 #include "HxString.h" 00013 #include "HxClassName.h" 00014 00015 /* 00016 Definition of the various kind of tag types. 00017 */ 00018 00019 // PhaseCategory 00020 00022 struct HxPixOp1PhaseTag { 00024 HxString toString() { return "1 phase"; } 00025 }; 00026 00028 struct HxPixOp2PhaseTag { 00030 HxString toString() { return "2 phase"; } 00031 }; 00032 00034 struct HxPixOpNPhaseTag { 00036 HxString toString() { return "N phase"; } 00037 }; 00038 00039 // TransVarianceCategory 00040 00042 struct HxPixOpTransVarTag { 00044 HxString toString() { return "Translation variant"; } 00045 }; 00046 00048 struct HxPixOpTransInVarTag { 00050 HxString toString() { return "Translation invariant"; } 00051 }; 00052 00053 // DirectionCategory 00054 00056 struct HxPixOpInTag { 00058 HxString toString() { return "In"; } 00059 }; 00060 00062 struct HxPixOpOutTag { 00064 HxString toString() { return "Out"; } 00065 }; 00066 00067 // Miscellanious predicates 00068 00069 template<class T> 00070 class HxPixOpMakeName { 00071 public: 00072 HxPixOpMakeName(HxString name); 00073 operator HxString() { return _name; } 00074 private: 00075 HxString _name; 00076 }; 00077 00078 template<class T> 00079 inline 00080 HxPixOpMakeName<T>::HxPixOpMakeName(HxString name) 00081 : _name(name) 00082 { 00083 _name += "<"; 00084 _name += HxClassName<T>(); 00085 _name += ">"; 00086 } 00087 00088 #endif