/* * Return true when the left and right set are equivalent. * Note: This currently is not implemented. */ bool Escher_SetEquality( Escher_ObjectSet_s * const left_set, Escher_ObjectSet_s * const right_set ) { bool rc = false; if ( (left_set->head == 0) && (right_set->head == 0) ) { rc = true; } else if ( ( (left_set->head != 0) && (right_set->head != 0) ) && (Escher_SetCardinality( left_set ) == Escher_SetCardinality( right_set )) ) { rc = true; } else { /* nop */ } return rc; }
static void Tracking_Display_CB_act5( Tracking_Display * self, const Escher_xtUMLEvent_t * const event ) { Escher_ObjectSet_s lapMarkers_space={0}; Escher_ObjectSet_s * lapMarkers = &lapMarkers_space; /* SELECT many lapMarkers FROM INSTANCES OF LapMarker */ XTUML_OAL_STMT_TRACE( 1, "SELECT many lapMarkers FROM INSTANCES OF LapMarker" ); Escher_CopySet( lapMarkers, &pG_Tracking_LapMarker_extent.active ); /* UI::setData(unit:laps, value:cardinality lapMarkers) */ XTUML_OAL_STMT_TRACE( 1, "UI::setData(unit:laps, value:cardinality lapMarkers)" ); Tracking_UI_setData( GPSWatch_Unit_laps_e, Escher_SetCardinality( lapMarkers ) ); Escher_ClearSet( lapMarkers ); }
/* * class operation: solve */ void sudoku_SEQUENCE_op_solve( void ) { i_t i;Escher_ObjectSet_s sequences_space; Escher_ObjectSet_s * sequences = &sequences_space; /* sequences (SEQUENCE) */ Escher_InitSet( sequences ); /* ASSIGN i = 0 */ i = 0; /* SELECT many sequences FROM INSTANCES OF SEQUENCE */ Escher_CopySet( sequences, &pG_sudoku_SEQUENCE_extent.active ); /* WHILE ( ( 25 > i ) ) */ while ( ( 25 > i ) ) { i_t j;sudoku_SEQUENCE * sequence; /* ASSIGN j = 0 */ j = 0; /* WHILE ( ( 25 > j ) ) */ while ( ( 25 > j ) ) { Escher_ObjectSet_s eligibles_space; Escher_ObjectSet_s * eligibles = &eligibles_space; /* eligibles (ELIGIBLE) */i_t count1;i_t count2;sudoku_SEQUENCE * sequence; Escher_InitSet( eligibles ); /* ::display( ) */ sudoku_display(); /* SELECT many eligibles FROM INSTANCES OF ELIGIBLE */ Escher_CopySet( eligibles, &pG_sudoku_ELIGIBLE_extent.active ); /* ASSIGN count1 = cardinality eligibles */ count1 = Escher_SetCardinality( eligibles ); /* ASSIGN count2 = 0 */ count2 = 0; /* FOR EACH sequence IN sequences */ { Escher_Iterator_s iter29; sudoku_SEQUENCE * sudoku_SEQUENCEiter29; Escher_IteratorReset( &iter29, sequences ); while ( (sudoku_SEQUENCEiter29 = (sudoku_SEQUENCE *)Escher_IteratorNext( &iter29 )) != 0 ) { sequence = sudoku_SEQUENCEiter29; { i_t k; /* ASSIGN k = sequence.solve_by_pruning() */ k = sudoku_SEQUENCE_op_solve_by_pruning(sequence); }} } /* SELECT many eligibles FROM INSTANCES OF ELIGIBLE */ Escher_CopySet( eligibles, &pG_sudoku_ELIGIBLE_extent.active ); /* ASSIGN count2 = cardinality eligibles */ count2 = Escher_SetCardinality( eligibles ); /* IF ( ( ( 81 == CELL::score() ) or ( count1 == count2 ) ) ) */ if ( ( ( 81 == sudoku_CELL_op_score() ) || ( count1 == count2 ) ) ) { /* BREAK */ break; } /* ASSIGN j = ( j + 1 ) */ j = ( j + 1 ); Escher_ClearSet( eligibles ); } /* FOR EACH sequence IN sequences */ { Escher_Iterator_s iter28; sudoku_SEQUENCE * sudoku_SEQUENCEiter28; Escher_IteratorReset( &iter28, sequences ); while ( (sudoku_SEQUENCEiter28 = (sudoku_SEQUENCE *)Escher_IteratorNext( &iter28 )) != 0 ) { sequence = sudoku_SEQUENCEiter28; { i_t k; /* ASSIGN k = sequence.solve_by_elimination() */ k = sudoku_SEQUENCE_op_solve_by_elimination(sequence); }} } /* IF ( ( 81 == CELL::score() ) ) */ if ( ( 81 == sudoku_CELL_op_score() ) ) { /* BREAK */ break; } /* ASSIGN i = ( i + 1 ) */ i = ( i + 1 ); } Escher_ClearSet( sequences ); }