Exemplo n.º 1
0
PWIZ_API_DECL
void diff(const ContactPtr a,
          const ContactPtr b,
          ContactPtr& a_b,
          ContactPtr& b_a,
          const DiffConfig& config)
{
    Person* a_person = dynamic_cast<Person*>(a.get());
    Person* b_person = dynamic_cast<Person*>(b.get());
    
    Organization* a_organization = dynamic_cast<Organization*>(a.get());
    Organization* b_organization = dynamic_cast<Organization*>(b.get());
    
    if (a_person && b_person)
    {
        a_b = ContactPtr(new Person());
        b_a = ContactPtr(new Person());
        diff(*a_person, *b_person,
                 (Person&)*a_b, (Person&)*b_a, config);
    }
    else if (a_organization && b_organization)
    {
        a_b = ContactPtr(new Organization());
        b_a = ContactPtr(new Organization());
        diff(*a_organization, *b_organization,
                 (Organization&)*a_b, (Organization&)*b_a, config);
    }
    else
    {
        ptr_diff(a, b, a_b, b_a, config);

        string a_type = (a_person ? "Person" : (a_organization ? "Organization" : "Contact"));
        string b_type = (b_person ? "Person" : (b_organization ? "Organization" : "Contact"));
    }
}