Changeset 16170 for trunk/ippTools/src/pxtools.h
- Timestamp:
- Jan 20, 2008, 3:48:37 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/pxtools.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/pxtools.h
r14490 r16170 51 51 bool pxGetOptions(FILE *stream, int argc, char **argv, pxConfig *config, psMetadata *modes, psMetadata *argSets); 52 52 53 #define PX TOOL_ADD_MODE(option, comment, modeval, argset) \53 #define PXOPT_ADD_MODE(option, comment, modeval, argset) \ 54 54 { \ 55 55 if (!psMetadataAddMetadata(argSets, PS_LIST_TAIL, option, 0, comment, argset)) {;\ … … 63 63 } 64 64 65 #define PXOPT_LOOKUP_STR(var, md, key, required, ret) \ 66 psString var; \ 67 { \ 68 bool status; \ 69 \ 70 var = psMetadataLookupStr(&status, md, key); \ 71 if (!status) { \ 72 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \ 73 return ret; \ 74 } \ 75 \ 76 if (required && (!var)) { \ 77 psError(PS_ERR_UNKNOWN, true, "%s is required", key); \ 78 return ret; \ 79 } \ 80 } 81 82 #define PXOPT_LOOKUP_F(var, md, key, type, required, ret) \ 83 ps##type var; \ 84 { \ 85 bool status; \ 86 \ 87 var = psMetadataLookup##type(&status, md, key); \ 88 if (!status) { \ 89 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \ 90 return ret; \ 91 } \ 92 \ 93 if (required && isnan(var)) { \ 94 psError(PS_ERR_UNKNOWN, true, "%s is required", key); \ 95 return ret; \ 96 } \ 97 } 98 99 #define PXOPT_LOOKUP_F32(var, md, key, required, ret) \ 100 PXOPT_LOOKUP_F(var, md, key, F64, required, ret) 101 102 #define PXOPT_LOOKUP_F64(var, md, key, required, ret) \ 103 PXOPT_LOOKUP_F(var, md, key, F64, required, ret) 104 105 #define PXOPT_LOOKUP_PRIMITIVE(var, md, key, type, suffix, max, required, ret) \ 106 type var; \ 107 { \ 108 bool status; \ 109 \ 110 var = psMetadataLookup##suffix(&status, md, key); \ 111 if (!status) { \ 112 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \ 113 return ret; \ 114 } \ 115 \ 116 if (required && (var == max)) { \ 117 psError(PS_ERR_UNKNOWN, true, "%s is required", key); \ 118 return ret; \ 119 } \ 120 } 121 122 #define PXOPT_LOOKUP_S16(var, md, key, required, ret) \ 123 PXOPT_LOOKUP_PRIMITIVE(var, md, key, psS16, S16, INT16_MAX, required, ret) 124 125 #define PXOPT_LOOKUP_S32(var, md, key, required, ret) \ 126 PXOPT_LOOKUP_PRIMITIVE(var, md, key, psS32, S32, INT32_MAX, required, ret) 127 128 #define PXOPT_LOOKUP_S64(var, md, key, required, ret) \ 129 PXOPT_LOOKUP_PRIMITIVE(var, md, key, psS64, S64, INT64_MAX, required, ret) 130 131 #define PXOPT_LOOKUP_U16(var, md, key, required, ret) \ 132 PXOPT_LOOKUP_PRIMITIVE(var, md, key, psU16, U16, UINT16_MAX, required, ret) 133 134 #define PXOPT_LOOKUP_U32(var, md, key, required, ret) \ 135 PXOPT_LOOKUP_PRIMITIVE(var, md, key, psU32, U32, UINT32_MAX, required, ret) 136 137 #define PXOPT_LOOKUP_U64(var, md, key, required, ret) \ 138 PXOPT_LOOKUP_PRIMITIVE(var, md, key, psU64, U64, UINT64_MAX, required, ret) 139 140 #define PXOPT_LOOKUP_TIME(var, md, key, required, ret) \ 141 psTime *var; \ 142 { \ 143 bool status; \ 144 \ 145 var = psMetadataLookupTime(&status, md, key); \ 146 if (!status) { \ 147 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \ 148 return ret; \ 149 } \ 150 \ 151 if (required && (!var)) { \ 152 psError(PS_ERR_UNKNOWN, true, "%s is required", key); \ 153 return ret; \ 154 } \ 155 } 156 157 #define PXOPT_LOOKUP_BOOL(var, md, key, ret) \ 158 bool var; \ 159 { \ 160 bool status; \ 161 \ 162 var = psMetadataLookupBool(&status, md, key); \ 163 if (!status) { \ 164 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", key); \ 165 return ret; \ 166 } \ 167 } 168 169 // XXX the PXOPT_COPY_* macros free 'to' on error 170 171 #define PXOPT_COPY_PRIMITIVE(from, to, type, suffix, oldname, newname, comment) \ 172 { \ 173 bool status = false; \ 174 type var = psMetadataLookup##suffix(&status, from, oldname); \ 175 if (!status) { \ 176 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for " oldname); \ 177 return false; \ 178 } \ 179 if (!psMetadataAdd##suffix(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, comment, var)) { \ 180 psError(PS_ERR_UNKNOWN, false, "failed to add item " newname); \ 181 psFree(to); \ 182 return false; \ 183 } \ 184 } 185 186 #define PXOPT_COPY_V(from, to, type, suffix, oldname, newname, comment) \ 187 { \ 188 bool status = false; \ 189 type var = psMetadataLookup##suffix(&status, from, oldname); \ 190 if (!status) { \ 191 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for " oldname); \ 192 return false; \ 193 } \ 194 if (var) { \ 195 if (!psMetadataAdd##suffix(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, comment, var)) { \ 196 psError(PS_ERR_UNKNOWN, false, "failed to add item " newname); \ 197 psFree(to); \ 198 return false; \ 199 } \ 200 }\ 201 } 202 203 #define PXOPT_COPY_F(from, to, type, oldname, newname, comment) \ 204 { \ 205 bool status = false; \ 206 ps##type var = psMetadataLookup##type(&status, from, oldname); \ 207 if (!status) { \ 208 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for " oldname); \ 209 return false; \ 210 } \ 211 if (!isnan(var)) { \ 212 if (!psMetadataAdd##type(to, PS_LIST_TAIL, newname, PS_META_DUPLICATE_OK, comment, var)) { \ 213 psError(PS_ERR_UNKNOWN, false, "failed to add item " newname); \ 214 psFree(to); \ 215 return false; \ 216 } \ 217 } \ 218 } 219 220 #define PXOPT_COPY_F32(from, to, oldname, newname, comment) \ 221 PXOPT_COPY_F(from, to, F32, oldname, newname, comment) 222 223 #define PXOPT_COPY_F64(from, to, oldname, newname, comment) \ 224 PXOPT_COPY_F(from, to, F64, oldname, newname, comment) 225 226 #define PXOPT_COPY_TIME(from, to, oldname, newname, comment) \ 227 PXOPT_COPY_V(from, to, psTime *, Time, oldname, newname, comment) 228 229 #define PXOPT_COPY_STR(from, to, oldname, newname, comment) \ 230 PXOPT_COPY_V(from, to, psString, Str, oldname, newname, comment) 231 232 #define PXOPT_COPY_S16(from, to, oldname, newname, comment) \ 233 PXOPT_COPY_PRIMITIVE(from, to, psS16, S16, oldname, newname, comment) 234 235 #define PXOPT_COPY_S32(from, to, oldname, newname, comment) \ 236 PXOPT_COPY_PRIMITIVE(from, to, psS32, S32, oldname, newname, comment) 237 238 #define PXOPT_COPY_S64(from, to, oldname, newname, comment) \ 239 PXOPT_COPY_PRIMITIVE(from, to, psS64, S64, oldname, newname, comment) 240 241 #define PXOPT_COPY_U16(from, to, oldname, newname, comment) \ 242 PXOPT_COPY_PRIMITIVE(from, to, psU16, U16, oldname, newname, comment) 243 244 #define PXOPT_COPY_U32(from, to, oldname, newname, comment) \ 245 PXOPT_COPY_PRIMITIVE(from, to, psU32, U32, oldname, newname, comment) 246 247 #define PXOPT_COPY_U64(from, to, oldname, newname, comment) \ 248 PXOPT_COPY_PRIMITIVE(from, to, psU64, U64, oldname, newname, comment) 249 65 250 #endif // PXTOOLS_H
Note:
See TracChangeset
for help on using the changeset viewer.
