| 10 |
class HasChild : public std::binary_function<GEDCOMParser::LineageLinkageGedcom const * const, GEDCOMParser::IndividualRecords_elem_t, bool> { |
class HasChild : public std::binary_function<GEDCOMParser::LineageLinkageGedcom const * const, GEDCOMParser::IndividualRecords_elem_t, bool> { |
| 11 |
public: |
public: |
| 12 |
bool operator()(GEDCOMParser::LineageLinkageGedcom const * const lineage, |
bool operator()(GEDCOMParser::LineageLinkageGedcom const * const lineage, |
| 13 |
GEDCOMParser::IndividualRecords_elem_t individu) const |
GEDCOMParser::IndividualRecords_elem_t individu_elem) const |
| 14 |
{ |
{ |
| 15 |
bool res = lineage->hasChildren(individu.second.getPtr()); |
GEDCOMParser::IndividualRecord const * const individu = individu_elem.second.getPtr(); |
| 16 |
|
bool res = false; |
| 17 |
|
std::string fam_id; |
| 18 |
|
FamilyRecords_t::const_iterator fam_iter; |
| 19 |
|
IndividualRecords_t::const_iterator child_iter; |
| 20 |
|
if (individu != 0) |
| 21 |
|
{ |
| 22 |
|
SpouseToFamilyLinks_t const &spouse_to_family_links = individu->getSpouseToFamilyLinks(); |
| 23 |
|
SpouseToFamilyLinks_t::const_iterator spouse_to_family_links_iter = spouse_to_family_links.begin(); |
| 24 |
|
GEDCOMParser::FamilyRecords_t const &families = lineage->getFamilyRecords(); |
| 25 |
|
while ((!res) && (spouse_to_family_links_iter != spouse_to_family_links.end())) |
| 26 |
|
{ |
| 27 |
|
fam_id = (*spouse_to_family_links_iter)->getFamsXref(); |
| 28 |
|
fam_iter = families.find(fam_id); |
| 29 |
|
if (fam_iter != families.end()) |
| 30 |
|
{ |
| 31 |
|
if ((*fam_iter).second->getChilXrefs().size() > 0) |
| 32 |
|
{ |
| 33 |
|
res = true; |
| 34 |
|
} |
| 35 |
|
} |
| 36 |
|
spouse_to_family_links_iter++; |
| 37 |
|
} |
| 38 |
|
} |
| 39 |
return res; |
return res; |
| 40 |
}; |
}; |
| 41 |
}; |
}; |