00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef HxImgFtorRuleBase_h
00011 #define HxImgFtorRuleBase_h
00012
00013 #include "HxString.h"
00014 #include "HxImageSignature.h"
00015
00016 class HxImgFtorKey;
00017
00023 class L_HXIMAGEREP HxIfRbPair
00024 {
00025 public:
00027 HxIfRbPair() {}
00028
00030 HxIfRbPair(HxImageSignature s, bool f = true)
00031 : sig(s), found(f) {}
00032
00034 bool found;
00036 HxImageSignature sig;
00037
00039 operator int() { return found ? 1 : 0; }
00041 operator HxImageSignature() { return sig; }
00042 };
00043
00044
00058 class L_HXIMAGEREP HxImgFtorRuleBase
00059 {
00060 public:
00062 typedef HxIfRbPair QueryResultType;
00063
00065 static HxImgFtorRuleBase& instance();
00066
00070 void setResultType(
00071 HxString resultType,
00072 HxString ftorClass, HxString srcType,
00073 HxString opName);
00074
00078 void setResultType(
00079 HxString resultType,
00080 HxString ftorClass,
00081 HxString src1Type, HxString src2Type,
00082 HxString opName);
00083
00088 QueryResultType getResultType(
00089 HxImageSignature defaultResult,
00090 HxString ftorClass, HxString srcType,
00091 HxString opName);
00092
00097 QueryResultType getResultType(
00098 HxImageSignature defaultResult,
00099 HxString ftorClass,
00100 HxString src1Type, HxString src2Type,
00101 HxString opName);
00102
00106 void setArgumentType(
00107 HxString argumentType,
00108 HxString ftorClass, HxString srcType,
00109 HxString opName);
00110
00115 QueryResultType getArgumentType(
00116 HxImageSignature defaultArgument,
00117 HxString ftorClass, HxString srcType,
00118 HxString opName);
00119
00123 void setKernelType(
00124 HxString kernelType,
00125 HxString ftorClass, HxString srcType,
00126 HxString opName);
00127
00132 QueryResultType getKernelType(
00133 HxImageSignature defaultKernel,
00134 HxString ftorClass, HxString srcType,
00135 HxString opName);
00136
00140 void setExtraType(
00141 HxString extraType,
00142 HxString ftorClass, HxString srcType,
00143 HxString opName);
00144
00149 QueryResultType getExtraType(
00150 HxImageSignature defaultExtra,
00151 HxString ftorClass, HxString srcType,
00152 HxString opName);
00153
00157 void setExtra2Type(
00158 HxString extra2Type,
00159 HxString ftorClass, HxString srcType,
00160 HxString opName);
00161
00166 QueryResultType getExtra2Type(
00167 HxImageSignature defaultExtra2,
00168 HxString ftorClass, HxString srcType,
00169 HxString opName);
00170
00174 void setIsModifying(
00175 HxString ftorClass, HxString opName,
00176 bool f = true);
00177
00181 bool getIsModifying(
00182 HxString ftorClass, HxString opName);
00183
00185 ~HxImgFtorRuleBase();
00186
00187 private:
00188 HxImgFtorRuleBase();
00189 HxImgFtorRuleBase(const HxImgFtorRuleBase&);
00190
00191 HxString getRule(
00192 HxString ruleType,
00193 const HxImgFtorKey& key);
00194 void setRule(
00195 HxString ruleType, const HxImgFtorKey& key,
00196 HxString ruleValue);
00197 bool getFlagRule(
00198 HxString ruleType,
00199 const HxImgFtorKey& key);
00200 void setFlagRule(
00201 HxString ruleType, const HxImgFtorKey& key,
00202 bool ruleValue);
00203 };
00204
00205 #endif