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;
    }
}