| 2279 | } |
| 2280 | |
| 2281 | void kprintf::spit(char *dst, char *src) |
| 2282 | { |
| 2283 | struct fmt f; |
| 2284 | |
| 2285 | while(src[0]) |
| 2286 | { |
| 2287 | f = get(src); |
| 2288 | if ((f.value != NULL) || (f.key != NULL)) |
| 2289 | { |
| 2290 | if(f.value != NULL) |
| 2291 | { |
| 2292 | // |
| 2293 | // Normal Replacement Would Suffice |
| 2294 | // |
| 2295 | strncpy(dst, f.value, strlen(f.value)); |
| 2296 | dst += strlen(f.value); |
| 2297 | src += strlen(f.key); |
| 2298 | } else { |
| 2299 | // |
| 2300 | // Directive - Function Like Macro |
| 2301 | // |
| 2302 | if( strcmp(f.key, "%MAD") == 0) |
| 2303 | { |
| 2304 | handleMAD(&src, &dst); |
| 2305 | } |
| 2306 | else if ( strcmp(f.key, "%VMAD") == 0) |
| 2307 | { |
| 2308 | handleMAD(&src, &dst, true); |
| 2309 | } else if ( strcmp(f.key, "%VMAD_AND_REDUCE") == 0) |
| 2310 | { |
| 2311 | handleVMAD_AND_REDUCE(&src, &dst); |
| 2312 | } else if ( strcmp(f.key, "%MAD_AND_REDUCE") == 0) |
| 2313 | { |
| 2314 | handleMAD_AND_REDUCE(&src, &dst); |
| 2315 | } else if ( strcmp(f.key, "%CONJUGATE") == 0) |
| 2316 | { |
| 2317 | handleCONJUGATE(&src, &dst); |
| 2318 | } else if ( strcmp(f.key, "%CLEAR_IMAGINARY") == 0) |
| 2319 | { |
| 2320 | handleClearImaginary(&src, &dst); |
| 2321 | } |
| 2322 | else if (strcmp(f.key, "%MUL") == 0) |
| 2323 | { |
| 2324 | handleMUL(&src, &dst); |
| 2325 | } |
| 2326 | else if (strcmp(f.key, "%VMUL") == 0) |
| 2327 | { |
| 2328 | handleMUL(&src, &dst, true); |
| 2329 | } else if (strcmp(f.key, "%ADD") == 0) |
| 2330 | { |
| 2331 | handleADD_SUB(&src, &dst, '+'); |
| 2332 | } |
| 2333 | else if (strcmp(f.key, "%SUB") == 0) |
| 2334 | { |
| 2335 | handleADD_SUB(&src, &dst, '-'); |
| 2336 | } |
| 2337 | else if (strcmp(f.key, "%DIV") == 0) |
| 2338 | { |
no test coverage detected