void RetinueAddWarrior(struct Retinue* _Retinue, const struct Person* _Warrior) { if(RetinueIsWarrior(_Retinue, _Warrior) != 0 || _Retinue->Leader->Person == _Warrior) return; ArrayInsertSort_S(&_Retinue->Warriors, (void*)_Warrior, ObjectCmp); _Retinue->FamilySz += FamilySize(_Warrior->Family); PushEvent(EVENT_NEWRECRUIT, _Retinue->Leader, (void*)_Warrior); }
Blob IPAddress::GetAddressBytes() const { int size = FamilySize(AddressFamily); if (!size) Throw(ExtErr::UnknownHostAddressType); switch ((int)get_AddressFamily()) { case AF_INET: return Blob(&m_sin.sin_addr, 4); case AF_INET6: return Blob(&m_sin6.sin6_addr, 16); default: Throw(ExtErr::UnknownHostAddressType); } }
void ExportMendelPedigree (individual *indlist) { int i; namelist *pedigree, *pedlist; markerlist *marker; individual *ind; pedlist = MakePedigreeList(indlist); cfopen ("mendel.ped", "w"); fprintf(F, "(I4,A15,A8)\n"); fprintf(F, "(3A11,3A2"); // Add marker info if (numberofmarkers()>0) fprintf(F, ",%d(1X,A7)", numberofmarkers()); if (numberoftraits()>0) fprintf(F, ",%d(1X,A8)", numberoftraits()); fprintf(F, ")\n"); for (pedigree = pedlist; pedigree; pedigree = pedigree ->next) { fprintf(F, "%-4d%-15s\n",FamilySize(indlist, pedigree->name), pedigree->name); for (ind = indlist; ind; ind = ind->next) { if (!strcmpl(pedigree->name, ind->pedigree)) { if (founder(ind)) { fprintf(F, "%-11s%-11s%-11s", ind->id, "",""); } else { fprintf(F, "%-11s%-11s%-11s", ind->id, ind->father->id, ind->mother->id); } // Spaces here for non-existing disease status and monozygotic twin status? fprintf(F, "%2s ", ind->sex==S_MALE ? "M" : "F"); // Now write the marker information for (i=1; i<=numberofmarkers(); i++) { marker = markernumber(ind, order[i]); if (marker->allele1 == 0 || marker->allele2 == 0) { fprintf(F, " %7s", ""); } else { // fprintf(F, " %3d/%-3d", marker->allele1, marker->allele2); fprintf(F, " %3c/%-3c", 64+marker->allele1, 64+marker->allele2); } } // Then write the trait information for (i=1; i<=numberoftraits(); i++) { if (!traitmiss(ind, i)) fprintf(F, " %8f", trait(ind, i)); else fprintf(F, " %8s", ""); } fprintf(F, "\n"); } } } freelist(pedlist); fclose(F); }