Listing 4: The function that parses .DFM files

bool pVCLComponent::Parse(FILE *fin, char *sss, int _level)
{  
    bool b_obj = !strcmpi(sss, "object");
    bool b_end = !strcmpi(sss, "end");

    level = _level;

    while (!b_obj && !b_end)            
    {
        im_iter ii = im.find(sss);
        if (ii != im.end())
        {  
            fscanf(fin, "%*s %d %s", ii->second, sss);
            continue;
        }
      
        ... // similar code for BoolMap bm      
        ... // similar code for StringMap sm_text
        ... // similar code for StringMap sm_info

        if (ParseMore(fin, sss))
        {  
            if (!feof(fin))
                fscanf(fin, "%s", sss);
            continue;
        }

        ... //other code here

        if (!b_end && ! b_obj)
        {  
            fscanf(fin, "%s", sss);
            b_end = !strcmpi(sss, "end");
            b_obj = !strcmpi(sss, "object");
        }
    }

    OnParseEnd();

    return true;
}