| 3364 | |
| 3365 | |
| 3366 | static void blr_print_verb(gds_ctl* control, SSHORT level) |
| 3367 | { |
| 3368 | /************************************** |
| 3369 | * |
| 3370 | * b l r _ p r i n t _ v e r b |
| 3371 | * |
| 3372 | ************************************** |
| 3373 | * |
| 3374 | * Functional description |
| 3375 | * Primary recursive routine to print BLR. |
| 3376 | * |
| 3377 | **************************************/ |
| 3378 | SLONG offset = control->ctl_blr_reader.getOffset(); |
| 3379 | blr_indent(control, level); |
| 3380 | UCHAR blr_operator = control->ctl_blr_reader.getByte(); |
| 3381 | |
| 3382 | if (blr_operator == blr_end) |
| 3383 | { |
| 3384 | blr_format(control, "blr_end, "); |
| 3385 | blr_print_line(control, (SSHORT) offset); |
| 3386 | return; |
| 3387 | } |
| 3388 | |
| 3389 | blr_print_blr(control, blr_operator); |
| 3390 | level++; |
| 3391 | const UCHAR* ops = blr_print_table[blr_operator].blr_operators; |
| 3392 | SSHORT n; |
| 3393 | |
| 3394 | while (*ops) |
| 3395 | { |
| 3396 | const UCHAR op = *ops++; |
| 3397 | |
| 3398 | switch (op) |
| 3399 | { |
| 3400 | case op_verb: |
| 3401 | blr_print_verb(control, level); |
| 3402 | break; |
| 3403 | |
| 3404 | case op_line: |
| 3405 | offset = blr_print_line(control, (SSHORT) offset); |
| 3406 | break; |
| 3407 | |
| 3408 | case op_byte: |
| 3409 | n = blr_print_byte(control); |
| 3410 | break; |
| 3411 | |
| 3412 | case op_byte_opt_verb: |
| 3413 | n = blr_print_byte(control); |
| 3414 | blr_print_line(control, (SSHORT) offset); |
| 3415 | if (n != 0) |
| 3416 | blr_print_verb(control, level); |
| 3417 | break; |
| 3418 | |
| 3419 | case op_word: |
| 3420 | n = blr_print_word(control); |
| 3421 | break; |
| 3422 | |
| 3423 | case op_pad: |
no test coverage detected