Items/RB_Is_ItemName [ Functions ]
FUNCTION
Is there an itemname in the line. Ignores leading spaces and remark markers.
INPUTS
line -- line to be searched.
RESULT
The kind of item that was found or NO_ITEM if no item could be found. The name of the item will be stored in item_name_buffer.
NOTES
We used to check for misspelled items names by testing if the item name buffer consists of only upper case characters. However checking for a misspelled item name this way results in many false positives. For instance many warnings are given for FORTRAN code as all the keywords are in uppercase. We need to find a better method for this.
SOURCE
enum ItemType RB_Is_ItemName( char *line ) { char *cur_char = line; int i = 0; cur_char = RB_Skip_Whitespace( cur_char ); if ( RB_Has_Remark_Marker( cur_char ) ) { cur_char = RB_Skip_Remark_Marker( cur_char ); cur_char = RB_Skip_Whitespace( cur_char ); /* It there anything left? */ if ( strlen( cur_char ) ) { enum ItemType item_type = NO_ITEM; /* Copy the name */ strcpy( item_name_buffer, cur_char ); /* remove any trailing spaces */ for ( i = strlen( item_name_buffer ) - 1; i >= 0 && utf8_isspace( item_name_buffer[i] ); --i ) { item_name_buffer[i] = '\0'; } /* No check and see if this is an item name */ if ( strlen( item_name_buffer ) ) { item_type = RB_Get_Item_Type( item_name_buffer ); #if 0 /* Until we find a better method */ if ( item_type == NO_ITEM ) { /* Check if it is a misspelled item name */ item_type = POSSIBLE_ITEM; for ( i = 0; i < strlen( item_name_buffer ); ++i ) { if ( !( utf8_isupper( item_name_buffer[i] ) || utf8_isspace( item_name_buffer[i] ) ) ) { /* No it is not */ item_type = NO_ITEM; break; } } } #endif } return item_type; } else { return NO_ITEM; } } else { return NO_ITEM; } }