| 54 | } |
| 55 | |
| 56 | LIST * sequence_transform( FRAME * frame, int flags ) |
| 57 | { |
| 58 | LIST * function = lol_get( frame->args, 0 ); |
| 59 | LIST * sequence = lol_get( frame->args, 1 ); |
| 60 | LIST * result = L0; |
| 61 | OBJECT * function_name = list_front( function ); |
| 62 | LISTITER args_begin = list_next( list_begin( function ) ), args_end = list_end( function ); |
| 63 | LISTITER iter = list_begin( sequence ), end = list_end( sequence ); |
| 64 | RULE * rule = bindrule( function_name, frame->prev->module ); |
| 65 | |
| 66 | for ( ; iter != end; iter = list_next( iter ) ) |
| 67 | { |
| 68 | FRAME inner[ 1 ]; |
| 69 | |
| 70 | frame_init( inner ); |
| 71 | inner->prev = frame; |
| 72 | inner->prev_user = frame->prev_user; |
| 73 | inner->module = frame->prev->module; |
| 74 | |
| 75 | lol_add( inner->args, list_push_back( list_copy_range( function, args_begin, args_end ), object_copy( list_item( iter ) ) ) ); |
| 76 | result = list_append( result, evaluate_rule( rule, function_name, inner ) ); |
| 77 | |
| 78 | frame_free( inner ); |
| 79 | } |
| 80 | |
| 81 | return result; |
| 82 | } |
| 83 | |
| 84 | void init_sequence() |
| 85 | { |
nothing calls this directly
no test coverage detected