diff options
author | Aaron M. Ucko <ucko@debian.org> | 2006-03-13 15:18:51 +0000 |
---|---|---|
committer | Aaron M. Ucko <ucko@debian.org> | 2006-03-13 15:18:51 +0000 |
commit | 047f9550aeffa40eb05ad53427718889f660e0f4 (patch) | |
tree | c491506658b86eb5b9b4145a178f7bf64fe4a543 /sequin/sequin2.c | |
parent | 4b1edc60532e16ec7d0255e1c3552c2e6a33737e (diff) |
Load /tmp/.../ncbi-tools6-6.1.20060301 into
branches/upstream/current.
Diffstat (limited to 'sequin/sequin2.c')
-rw-r--r-- | sequin/sequin2.c | 74 |
1 files changed, 50 insertions, 24 deletions
diff --git a/sequin/sequin2.c b/sequin/sequin2.c index 0173e426..f03c593f 100644 --- a/sequin/sequin2.c +++ b/sequin/sequin2.c @@ -29,7 +29,7 @@ * * Version Creation Date: 1/22/95 * -* $Revision: 6.583 $ +* $Revision: 6.586 $ * * File Description: * @@ -2678,12 +2678,14 @@ static ValNodePtr ReadRowListFromFile (void) } /* This function will find the sequence number in the IDAndTitleEdit - * to use for each row and put that value in the choice for the row. + * to use for each row and put that value in the sequence_numbers array. */ static Boolean ValidateModifierTableSequenceIDs (ValNodePtr header_line, - IDAndTitleEditPtr iatep) + IDAndTitleEditPtr iatep, + Int4Ptr sequence_numbers, + Int4 num_rows) { ValNodePtr not_found = NULL; ValNodePtr found_more_than_once = NULL; @@ -2695,13 +2697,18 @@ ValidateModifierTableSequenceIDs CharPtr err_msg = NULL; ValNodePtr row_vnp, col_vnp, prev_row; Int4 i, seq_num, other_instances; + Boolean found; + Int4 row_number; - if (header_line == NULL || header_line->next == NULL || iatep == NULL) + if (header_line == NULL || header_line->next == NULL || iatep == NULL + || sequence_numbers == NULL || num_rows < ValNodeLen (header_line->next)) { return FALSE; } - for (row_vnp = header_line->next; row_vnp != NULL; row_vnp = row_vnp->next) + for (row_vnp = header_line->next, row_number = 0; + row_vnp != NULL && row_number < num_rows; + row_vnp = row_vnp->next, row_number++) { col_vnp = row_vnp->data.ptrvalue; if (col_vnp == NULL || col_vnp->data.ptrvalue == NULL) @@ -2710,18 +2717,18 @@ ValidateModifierTableSequenceIDs } /* find correct sequence number */ - seq_num = -1; - for (i = 0; i < iatep->num_sequences && seq_num < 0; i++) + seq_num = 0; + for (i = 0, found = FALSE; i < iatep->num_sequences && !found; i++) { if (StringCmp (iatep->id_list [i], col_vnp->data.ptrvalue) == 0) { seq_num = i; + found = TRUE; } } + sequence_numbers[row_number] = seq_num; - row_vnp->choice = seq_num; - - if (seq_num < 0) + if (!found) { ValNodeAddPointer (¬_found, 0, StringSave (col_vnp->data.ptrvalue)); } @@ -2904,7 +2911,7 @@ static Boolean ValidateTableValues (ValNodePtr header_line) for (row_vnp = header_line->next; row_vnp != NULL; row_vnp = row_vnp->next) { /* skip rows with bad sequence IDs */ - if (row_vnp->choice < 0 || row_vnp->data.ptrvalue == NULL) + if (row_vnp->data.ptrvalue == NULL) { continue; } @@ -2974,6 +2981,8 @@ static Boolean CheckModifiersForOverwrite (ValNodePtr header_line, IDAndTitleEditPtr iatep, + Int4Ptr sequence_numbers, + Int4 num_rows, BoolPtr erase_where_blank, BoolPtr parse_multiple) { @@ -2982,12 +2991,13 @@ CheckModifiersForOverwrite ValNodePtr blank_column_list = NULL; ValNodePtr replace_column_list = NULL; ValNodePtr parse_multi_list = NULL; - Int4 col_num; + Int4 col_num, row_num; Boolean rval = TRUE; CharPtr err_msg; MsgAnswer ans; if (header_line == NULL || header_line->next == NULL || iatep == NULL + || sequence_numbers == NULL || num_rows < ValNodeLen (header_line->next) || erase_where_blank == NULL || parse_multiple == NULL) { return FALSE; @@ -2996,9 +3006,11 @@ CheckModifiersForOverwrite *erase_where_blank = FALSE; *parse_multiple = FALSE; - for (row_vnp = header_line->next; row_vnp != NULL; row_vnp = row_vnp->next) + for (row_vnp = header_line->next, row_num = 0; + row_vnp != NULL && row_num < num_rows; + row_vnp = row_vnp->next, row_num++) { - if (row_vnp->choice < 0 || row_vnp->data.ptrvalue == NULL) + if (row_vnp->data.ptrvalue == NULL) { continue; } @@ -3016,7 +3028,7 @@ CheckModifiersForOverwrite if (header_vnp->data.ptrvalue != NULL) { title_val = FindValueFromPairInDefline (header_vnp->data.ptrvalue, - iatep->title_list [row_vnp->choice]); + iatep->title_list [sequence_numbers[row_num]]); data_val = col_vnp->data.ptrvalue; if (!StringHasNoText (title_val)) { @@ -3118,6 +3130,8 @@ static Boolean ImportModifiersToIDAndTitleEdit (IDAndTitleEditPtr iatep) { ValNodePtr header_line, row_vnp, col_vnp, header_vnp; Boolean erase_where_blank = FALSE, parse_multi = FALSE; + Int4Ptr sequence_numbers; + Int4 num_rows, row_number; if (iatep == NULL) { @@ -3140,9 +3154,13 @@ static Boolean ImportModifiersToIDAndTitleEdit (IDAndTitleEditPtr iatep) return FALSE; } - if (!ValidateModifierTableSequenceIDs (header_line, iatep)) + num_rows = ValNodeLen (header_line->next); + sequence_numbers = (Int4Ptr) MemNew (num_rows * sizeof (Int4)); + + if (!ValidateModifierTableSequenceIDs (header_line, iatep, sequence_numbers, num_rows)) { header_line = FreeTableDisplayRowList (header_line); + sequence_numbers = MemFree (sequence_numbers); return FALSE; } @@ -3150,25 +3168,32 @@ static Boolean ImportModifiersToIDAndTitleEdit (IDAndTitleEditPtr iatep) if (!ValidateImportModifierColumnNames (header_line)) { header_line = FreeTableDisplayRowList (header_line); + sequence_numbers = MemFree (sequence_numbers); return FALSE; } if (!ValidateTableValues (header_line)) { header_line = FreeTableDisplayRowList (header_line); + sequence_numbers = MemFree (sequence_numbers); return FALSE; } - if (!CheckModifiersForOverwrite (header_line, iatep, &erase_where_blank, &parse_multi)) + if (!CheckModifiersForOverwrite (header_line, iatep, + sequence_numbers, num_rows, + &erase_where_blank, &parse_multi)) { header_line = FreeTableDisplayRowList (header_line); + sequence_numbers = MemFree (sequence_numbers); return FALSE; } /* now apply */ - for (row_vnp = header_line->next; row_vnp != NULL; row_vnp = row_vnp->next) + for (row_vnp = header_line->next, row_number = 0; + row_vnp != NULL && row_number < num_rows; + row_vnp = row_vnp->next, row_number++) { - if (row_vnp->data.ptrvalue == NULL || row_vnp->choice < 0) + if (row_vnp->data.ptrvalue == NULL) { continue; } @@ -3183,13 +3208,14 @@ static Boolean ImportModifiersToIDAndTitleEdit (IDAndTitleEditPtr iatep) header_vnp != NULL && col_vnp != NULL; header_vnp = header_vnp->next, col_vnp = col_vnp->next) { - iatep->title_list [row_vnp->choice] = ApplyImportModToTitle (iatep->title_list [row_vnp->choice], + iatep->title_list [sequence_numbers [row_number]] = ApplyImportModToTitle (iatep->title_list [sequence_numbers[row_number]], header_vnp->data.ptrvalue, col_vnp->data.ptrvalue, erase_where_blank, parse_multi); } } + sequence_numbers = MemFree (sequence_numbers); return TRUE; } @@ -17161,7 +17187,7 @@ static Boolean IsDuplicateEditID (IDAndTitleEditPtr iatep_new, Int4 new_pos, IDA { continue; } - if (StringCmp (iatep_new->id_list [new_pos], iatep_new->id_list [j]) == 0) + if (StringICmp (iatep_new->id_list [new_pos], iatep_new->id_list [j]) == 0) { return TRUE; } @@ -17170,7 +17196,7 @@ static Boolean IsDuplicateEditID (IDAndTitleEditPtr iatep_new, Int4 new_pos, IDA { for (j = 0; j < iatep_current->num_sequences; j++) { - if (StringCmp (iatep_new->id_list [new_pos], iatep_current->id_list [j]) == 0) + if (StringICmp (iatep_new->id_list [new_pos], iatep_current->id_list [j]) == 0) { return TRUE; } @@ -17192,7 +17218,7 @@ static Boolean EditHasDuplicateIDs (IDAndTitleEditPtr iatep_new, IDAndTitleEditP { for (j = i + 1; j < iatep_new->num_sequences; j++) { - if (StringCmp (iatep_new->id_list [i], iatep_new->id_list [j]) == 0) + if (StringICmp (iatep_new->id_list [i], iatep_new->id_list [j]) == 0) { return TRUE; } @@ -17201,7 +17227,7 @@ static Boolean EditHasDuplicateIDs (IDAndTitleEditPtr iatep_new, IDAndTitleEditP { for (j = 0; j < iatep_current->num_sequences; j++) { - if (StringCmp (iatep_new->id_list [i], iatep_current->id_list [j]) == 0) + if (StringICmp (iatep_new->id_list [i], iatep_current->id_list [j]) == 0) { return TRUE; } |