Functions | |
FLA_Error | FLASH_SA_FS (FLA_Obj L, FLA_Obj D, FLA_Obj p, FLA_Obj C, FLA_Obj E, dim_t nb_alg) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Obj_width(), FLA_Part_1x2(), FLA_Repart_1x2_to_1x3(), FLA_SA_FS_task(), and FLASH_Queue_get_enabled().
Referenced by FLASH_SA_LU().
00038 { 00039 FLA_Obj CL, CR, C0, C1, C2; 00040 00041 FLA_Obj EL, ER, E0, E1, E2; 00042 00043 FLA_Part_1x2( C, &CL, &CR, 0, FLA_LEFT ); 00044 00045 FLA_Part_1x2( E, &EL, &ER, 0, FLA_LEFT ); 00046 00047 while ( FLA_Obj_width( CL ) < FLA_Obj_width( C ) ) 00048 { 00049 FLA_Repart_1x2_to_1x3( CL, /**/ CR, &C0, /**/ &C1, &C2, 00050 1, FLA_RIGHT ); 00051 00052 FLA_Repart_1x2_to_1x3( EL, /**/ ER, &E0, /**/ &E1, &E2, 00053 1, FLA_RIGHT ); 00054 00055 /*------------------------------------------------------------*/ 00056 00057 if ( FLASH_Queue_get_enabled( ) ) 00058 { 00059 // Enqueue 00060 ENQUEUE_FLASH_SA_FS( *FLASH_OBJ_PTR_AT( L ), 00061 *FLASH_OBJ_PTR_AT( D ), 00062 *FLASH_OBJ_PTR_AT( p ), 00063 *FLASH_OBJ_PTR_AT( C1 ), 00064 *FLASH_OBJ_PTR_AT( E1 ), 00065 nb_alg, 00066 NULL ); 00067 } 00068 else 00069 { 00070 // Execute leaf 00071 FLA_SA_FS_task( *FLASH_OBJ_PTR_AT( L ), 00072 *FLASH_OBJ_PTR_AT( D ), 00073 *FLASH_OBJ_PTR_AT( p ), 00074 *FLASH_OBJ_PTR_AT( C1 ), 00075 *FLASH_OBJ_PTR_AT( E1 ), 00076 nb_alg, 00077 NULL ); 00078 } 00079 00080 /*------------------------------------------------------------*/ 00081 00082 FLA_Cont_with_1x3_to_1x2( &CL, /**/ &CR, C0, C1, /**/ C2, 00083 FLA_LEFT ); 00084 00085 FLA_Cont_with_1x3_to_1x2( &EL, /**/ &ER, E0, E1, /**/ E2, 00086 FLA_LEFT ); 00087 } 00088 00089 return FLA_SUCCESS; 00090 }